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

如何在Matlab中提取符号函数矩阵,matlab,matrix,symbolic-math,Matlab,Matrix,Symbolic Math,如何得到X=A(2)=c*sin(tt(t))(第二行的函数)?如果我键入A(2),结果如下(它用一个常数代替函数,这不是我想要的): 在matlab中,必须使用“subs(f)”函数来计算函数 首先创建函数: >> A(2) ans = 0 c*sin(tt(2)) c*cos(tt(2)) 在此之后,A指定X值: syms g(x) g(x) = x^3; 然后,如果使用subs函数计算g,结果是期望值8,但它被指定给符号函数gnew。这个新的符号

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

在matlab中,必须使用“subs(f)”函数来计算函数

首先创建函数:

>> A(2)
ans =
            0
 c*sin(tt(2))
 c*cos(tt(2))
在此之后,A指定X值:

syms g(x)
g(x) = x^3;
然后,如果使用subs函数计算g,结果是期望值8,但它被指定给符号函数gnew。这个新的符号函数形式上依赖于变量x

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


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

g2 = g(x)

g2 =
4

g2 = g(2)

g2 =
4
现在
A(2)
将返回
c*sin(tt(t))

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

syms c A tt(t)
A = [0;
     c*sin(tt(t));
     c*sin(tt(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))
。还可以使用提取基础表达式:

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

我只是编辑我的问题,让它更清楚。我不想用常数来代替函数,我理解这个问题,我认为如果不改变函数定义的话,要做到这一点并不容易。是否可以更改功能以接收2个参数?通过这种方式,您可以设置参数“a”=2,“b”参数保护您不想更改的函数。
B = formula(A):