【问题标题】:Matlab Accessing Elements in Symbolic MatrixMatlab 访问符号矩阵中的元素
【发布时间】:2022-01-08 16:02:33
【问题描述】:
syms x1 x2 

f1(x1,x2)=x1^2-3*x2+5;
f2(x1,x2)=-2*sin(x1)+5*x2*x1;

M = [f1 ; f2];
disp(M(1));

我正在尝试创建符号表达式 f1 和 f2 的矩阵。但是,我在访问矩阵中的特定元素时遇到问题。这给了我一个错误,因为它认为我想在我只想要一个特定索引时评估矩阵。有没有办法解决这个问题?

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    如果您想要符号表达式而不是函数,则不需要括号中的参数:

    syms x1 x2 
    
    f1 = x1^2-3*x2+5;
    f2 = -2*sin(x1)+5*x2*x1;
    
    M = [f1 ; f2];
    disp(M(1));
    

    如果你想将函数句柄放入矩阵中,Matlab 会告诉你这是不允许的,并建议使用元胞数组。像这样:

    f1 = @(x1,x2) x1^2-3*x2+5;
    f2 = @(x1,x2) -2*sin(x1)+5*x2*x1;
    
    M = {f1 , f2};
    disp(M{1});
    

    然后就可以调用函数了:M{1}(5,3)返回21,M{2}(5,3)返回76.9

    【讨论】:

    • 你说得很好。但是如果我还想维护一个函数的功能,我该怎么做呢?
    • 添加了一个函数版本,带有元胞数组。
    【解决方案2】:

    这个怎么样?

    syms x1 x2 
    
    f1 = x1^2-3*x2+5;
    f2 = -2*sin(x1)+5*x2*x1;
    
    M = [f1 ; f2];
    
    disp([1 0]*M); % accessing the element 1 by scalar product.
    

    这样您就可以访问函数向量的元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      相关资源
      最近更新 更多