符号函数矩阵

ang*_*ist 1 matlab symbolic-math

我想在Matlab中定义一个符号函数矩阵(而不是变量).在工作区中,我希望它是大小为N-by-M的类symfun的元素(其中N和M是正整数).

hor*_*ler 5

您不能创建symfun类元素矩阵(可能出于与创建函数句柄矩阵相同的原因),但您可以创建一个返回符号表达式矩阵的符号函数:

syms x y z;
Afun = symfun([x+y y-z;y/x z-1],[x y z])
B = Afun(sym(pi),cos(y),z^2)
Run Code Online (Sandbox Code Playgroud)

当然,Afun在评估之前,您将无法直接访问元素,尽管您可以使用formula它们来提取它们:

Amat = formula(Afun);
Amat(1)
Run Code Online (Sandbox Code Playgroud)

symfun只要它们都具有相同的输入参数(不需要使用参数),就可以将s 连接成矩阵.然而,连接仍然不形成symfuns 的矩阵- 它只是连接公式本身,所以你仍然最终得到一个symfun如上所述.

另一种选择是创建符号表达式矩阵,例如:

syms x y z;
A = [2*x    3*y^2   x+z;
     -y^3+1 sin(x)  sym('pi');
     3.5    exp(-z) 1/x];
Run Code Online (Sandbox Code Playgroud)

可以使用subs以下方法评估:

B = subs(A,{x,y,z},{sym(pi),cos(y),z^2})
Run Code Online (Sandbox Code Playgroud)

正常矩阵运算有效,例如:

B = subs(A(2,:),{x,y,z},{sym(pi),cos(y),z^2})
Run Code Online (Sandbox Code Playgroud)