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

MATLAB - Can't create symbolic variables through array loop

我有这个元胞数组

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 被声明为符号而不是被调用和访问的各个变量本身?

ans 被声明为 sym 因为 sym function requires an explicit output argument to generate a Symbolic Variable. This behavior is different from the syms function that uses the semantics of 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