2012-05-10 37 views
0

可能重複:
how to compare array with matlab在Matlab中比較不同類型的數組的

這裏有一個例子就是我在尋找:

[a,b,c,d] = getVal(x); 

這會給:

a = 
    a 

b= 
    0 

c = 
    10 

d = 
    [] 

而且我有:

expected = {'a','0','10',[]}; 

我如何才能讓[a,b,c,d]和預期之間的比較? 當我打電話只是getVal(x),它給我的只有第一個值,當我寫:

[a,b,c,d] = getVal(x) 

然後我在日誌中得到了所有值。爲什麼不是這樣的話,當我打電話
getVal(x)? 爲了比較我想:

isequal([a,b,c,d], expected {1:end}) 

,但它不工作,任何想法如何解決我的問題?

+0

你有可能會剛編輯您剛纔的問題繼續存在:http://stackoverflow.com/questions/10533761/how-to -compare陣列與 - MATLAB –

回答

0

不要試圖將a,b,c,d放入矩陣中。那會附加空格。相反,使用一個單元陣列,就像你有expected

>> a='a'; b='0'; c='10'; d=[]; 
>> expected = {'a','0','10',[]}; 
>> isequaln({a,b,c,d}, expected) 

ans = 

    1 

你還問,爲什麼簡單的調用getVal(x)不給所有的值。這是因爲在MATLAB中,函數可以(並且經常)對輸出參數的數量,即賦值左側的變量數量作出反應。如果使用四個輸出參數調用函數,您的函數返回四個值;如果它沒有做任何特殊的事情,那麼用零個或一個輸出參數調用它將只返回這些值中的第一個,在你的例子中,'a'。如果你想與這些值的所有四個單元陣列,這樣做

[a, b, c, d] = getVal(x) 
{a, b, c, d} 
+0

我使用的函數GETVAL(x)的女巫返回[A,b,C,d],因此我想這個比較預期 – lola

+0

所以?比較步驟不受d如何獲得其值的影響。 (只是要在安全方面:「比較」的意思是「拿兩件事情,並檢查他們是平等的。」),對你提出的解決方案 –

+0

你construncting兩項預期值,而我要比較預期由函數返回的實際值 – lola