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

时间:2017-02-16 11:59:57

标签: matlab matrix symbolic-math

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))

2 个答案:

答案 0 :(得分:0)

在matlab中,你必须使用“subs(f)”函数来评估函数。

首先创建函数:

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

之后将X值设为:

x=2;

然后如果使用subs函数计算g,结果是期望值8,但它被赋值给符号函数gnew。这个新的符号函数在形式上取决于变量x。

gnew = subs(g)

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

g2 = g(x)

g2 =
4

g2 = g(2)

g2 =
4

答案 1 :(得分:0)

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

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

现在A(2)将返回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)将返回c*sin(tt(t))。您还可以使用formula提取基础表达式:

B = formula(A):