我试图创建与其他符号变量的函数(时间t在这种情况下)的元素与下面的代码的n×m矩阵:创建功能元素符号矩阵
syms t x(t) L
N = [ 0, 0, ...
0, 0;
0, 0, ...
0, 0;
1 - 3*(x/L)^2 + 2*(x/L)^3, -x + 2*x^2/L - x^3/(L^2), ...
3*(x/L)^2 - 2*(x/L)^3, x^2/L - x^3/(L^2)];
这个问题我有MATLAB将矩阵N转换为函数,即N(t)。当我试图访问特定成员
N(1, 1)
或小矩阵
N(1, 3:4)
MATLAB trows以下错误:
Symbolic function expected 1 inputs and received 2.
我理解的错误消息,但它不是我从期待代码。我不想要一个取决于t的符号矩阵,并且我不了解这种情况下的MATLABS行为(例如为什么不是N也是L或其他函数的函数)。一个解决办法是用
N = sym(zeros(3, 4));
创建一个零符号矩阵和手工填写的元素
N(3, 1) = 1 - 3*(x/L)^2 + 2*(x/L)^3;
N(3, 2) = -x + 2*x^2/L - x^3/(L^2);
N(3, 3) = 3*(x/L)^2 - 2*(x/L)^3;
N(3, 4) = x^2/L - x^3/(L^2);
但你可以在很多不必要的代码中看到这种做法的结果。那么,我的第一种方法有什么问题?
我发现了另一个解决方案来解决我的问题,但是我不是很满意它,因为临时变量需要定义,并且代码速度很快。这个想法是在x(t)旁创建第二个符号变量,它不依赖于使用sym x_的其他变量。然后我用x_而不是x(t)重写N,之后用subs命令将x(t)替换回矩阵中。 – rocketsound
我刚刚注意到,当我尝试集成或区分时,这种方法变得更奇怪,因为MATLAB不允许关于因变量(或函数或w/e MATLAB解释它们)或其派生物的集成/区分。所以我必须创建像x__和x___这样的其他变量来处理所有派生。这是MATLAB的预期工作流程吗? – rocketsound