2017-04-02 24 views
0

我想檢查Matlab工作區中存在的變量,然後檢查它的類。 所有事情都是由m文件中的命令完成的。 在這種情況下,變量的名稱是一個符號或字符,我可以如何使用isa函數。如何在matlab中傳遞參數給'isa'函數

a='x'; 
isa(a,'timeseries') 

上面的代碼不工作,但如果我改變

isa(x,'timeseries') 

它是好的,所以我怎麼可以通過不直接通過其名稱檢查類對象的? 謝謝!

回答

0

,因爲當你傳遞一個字符串作爲第一個參數isa不能使用isa這樣的類字符串是char

isa('x', 'double') 
% 0 

isa('x', 'char') 
% 1 

可能使用eval傳遞xisa

isa(eval('x'), 'double') 

但是, Ë更好的做法是明確的將類使用whos

S = whos('x'); 
strcmp(S.class, 'double') 
% 1 
1

您想使用的功能existhttps://www.mathworks.com/help/matlab/ref/exist.html

if exist('x','var') 
    class(x) 
end 

你傳遞一個字符串變量來exist的名稱。一旦你確定它存在,你可以在你的isa呼叫中使用它。

+0

它不適合我的情況下工作,無論如何,我希望變量來傳遞「X」或東西轉換爲對象名稱以「ISA」使用,只存在於工作區中檢查變量是否存在。 – greenworld

+0

@greenworld:這回答你說的問題。你首先需要使用'exist'來檢查變量是否存在。然後你可以用'isa'來看它是否屬於某個特定的類。目前還不清楚爲什麼你需要將變量的字符串名稱傳遞給'isa'。如果您有其他問題,請修改上面的問題。 – horchler

+0

感謝您的回覆,但是,我認爲我的問題很明確,傳遞參數描述如下: 「在這種情況下,變量的名稱是符號或字符,我怎麼可以使用isa函數」 In另一方面,當我寫道: isa(x,'timeseries') 「沒關係」 這意味着我知道如何檢查一個變量是否存在。那麼你的答案不能幫助我。 爲什麼我需要這樣做,因爲我想用工作區中存在的不同類來處理多個變量。 – greenworld

相關問題