【问题标题】:How to define n symbolic variables in Matlab?Matlab中如何定义n个符号变量?
【发布时间】:2013-11-13 12:42:03
【问题描述】:

我想在 Matlab 中定义 n 个符号变量。例如,如果用户输入n=3,那么编译器将x1x2x3 定义为符号变量(n 的范围是无限的)。我如何通过for 循环来做到这一点?

【问题讨论】:

    标签: matlab symbolic-math


    【解决方案1】:

    我想符号变量和常规变量的建议相同:

    如果可以防止,请不要创建编号变量。请改用向量。

    我自己无法尝试,但我相信doc syms 会引导您这样做:

    A = sym('A',dim) %creates a vector or a matrix of symbolic variables.
    

    【讨论】:

      【解决方案2】:

      无需使用循环。

      N = input('How many variables? ');
      strArray = [ repmat('x',N,1) dec2base(1:N,10) repmat(' ',N,1)]; % create strings
      strArray = strvcat(regexprep(mat2cell(strArray, ...
        ones(1,size(strArray,1)), size(strArray,2)),'x0+','x')).'; % remove heading 0's
      str = ['syms ' strArray(:).']; % string to be avaluated
      eval(str)
      

      例如输入“11”,字符串

      syms x1  x2  x3  x4  x5  x6  x7  x8  x9  x10 x11 
      

      被构建和评估,它创建了 11 个符号变量,

      【讨论】:

        【解决方案3】:

        按照@DennisJaheruddin 所示创建向量确实是标准方法,但如果您确实需要单独的变量:

        for i = 1:10
            x = sprintf('x%d',i);
            assignin('caller',x,sym(x));
        end
        

        或者这将在一行中完成:

        arrayfun(@(n)assignin('caller',sprintf('x%d',n),sym(sprintf('x%d',n))),1:10)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-02
          • 2015-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多