如何在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):