如何在 Matlab 中提取符号函数矩阵

How to extract a matrix of symbolic functions in Matlab

syms c  A(t) v(t)
A(t) =
            0
 c*sin(tt(t))
 c*cos(tt(t))

如何得到X = A(2) = c*sin(tt(t));(第二行的函数)?如果我输入 A(2),结果将如下(它用一个常量代替函数,这不是我想要的):

>> A(2)
ans =
            0
 c*sin(tt(2))
 c*cos(tt(2))

在 matlab 中你必须使用 "subs(f)" 函数来计算函数。

首先创建函数:

syms g(x)
g(x) = x^3;

之后分配 X 值:

x=2;

然后,如果您使用 subs 函数计算 g,结果是预期值 8,但它被分配给符号函数 gnew。这个新的符号函数正式依赖于变量 x。

gnew = subs(g)

函数调用,g(x),returnsg的值对应x的当前值。例如,如果将值 2 赋给变量 x,则调用 g(x) 等同于调用 g(2)

g2 = g(x)

g2 =
4

g2 = g(2)

g2 =
4

问题是您将 A 定义为符号函数 (symfun),而不是符号表达式数组。相反:

syms c A tt(t)
A = [0;
     c*sin(tt(t));
     c*sin(tt(t))];

现在 A(2) 将 return c*sin(tt(t))

或者,如果您无法更改 A(t) 的定义,则需要将其分配给中间变量以将其转换为符号表达式数组:

syms c  A(t) tt(t)
A(t) = [0;
        c*sin(tt(t));
        c*cos(tt(t))];
B = A(t);

然后,B(2)将returnc*sin(tt(t))。您还可以使用 formula 来提取底层表达式:

B = formula(A):