MATLAB - 无法通过数组循环创建符号变量

时间:2016-02-25 18:02:24

标签: arrays matlab symbolic-math

我有这个单元格数组

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数组。为什么ans被声明为sym而不是单独的变量,这些变量被调用和访问?

1 个答案:

答案 0 :(得分: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