【问题标题】:MATLAB - Can't create symbolic variables through array loopMATLAB - 无法通过数组循环创建符号变量
【发布时间】:2016-02-26 02:20:33
【问题描述】:

我有这个元胞数组

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 而不是被调用和访问的单个变量本身?

【问题讨论】:

    标签: arrays matlab symbolic-math


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多