2016-02-25 140 views
0

創建符號變量我有這個單元陣列MATLAB - 無法通過數組循環

MatrixF = 

{3x1 cell} {3x1 cell} 

MatrixF{1} 

ans = 

'f1' 
'f2 ' 
'f3 ' 

MatrixF{2} 

ans = 

'x1' 
'x2 ' 
'x3 ' 

我想每個項目轉換MatrixF陣列中爲符號變量。我認爲這個循環會這樣做

[a, b] = size(MatrixF); 
for i=1:b; 
    [c,d] = size(MatrixF{i}); 
    for j=1:c; 
     sym(MatrixF{i}{j}); 
    end; 
end; 

但相反,我得到的唯一輸出是變量ans,它是1x1數組。爲什麼被聲明爲sym而不是被稱爲和被訪問的個體變量?

回答

2

ans正在宣佈爲sym,因爲sym function需要顯式輸出參數才能生成符號變量。此行爲與syms function不同,它使用command form的語義將變量引入存在。

因此,您可以執行以下操作:

[a, b] = size(MatrixF); 
for i=1:b 
    [c,d] = size(MatrixF{i}); 
    for j=1:c 
     MatrixF{i}{j} = sym(MatrixF{i}{j}); 
    end 
end 

雖然,我建議做清潔得多(可能更快):

>> x = sym('x',[3,1]) 
x = 
x1 
x2 
x3 

>> f = sym('f',[3,1]) 
f = 
f1 
f2 
f3