如何在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),其结果将是如下(它可以替代的功能,这是不是我的愿望常数):如何在Matlab中提取符号函数矩阵

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

的问题是,你定义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): 

在MATLAB,你必须使用“潜艇(六)”函数计算功能。

首先创建功能:

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

之后ASIGN X值:

x=2; 

然后如果你使用潜艇功能评估克,结果是预期值8,但被赋予一个符号函数,gnew。这个新的符号函数正式依赖于变量x。

gnew = subs(g) 

函数调用g(x)返回g的当前值x的值。例如,如果你分配了值2至变量x,则调用G(X)等效于调用克(2)

g2 = g(x) 

g2 = 
4 

g2 = g(2) 

g2 = 
4 
+0

我只是编辑我的问题,使其更清晰。我不想用常数代替函数。 – greenworld

+0

我明白了这个问题,我认为在不改变函数定义的情况下这并不容易。是否可以改变功能来接收2个参数?通过这种方式,您可以设置参数'a'= 2,'b'参数保护您不想更改的功能。 –