2016-02-25 80 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