Matlab 从sym到矩阵的系数提取

Matlab 从sym到矩阵的系数提取,matlab,matrix,symbolic-math,coefficients,Matlab,Matrix,Symbolic Math,Coefficients,我有这样一个符号向量: du = [3u11 - 1u12, 8*u12 - u11 - 3*u14, 4*u13 - 5*u14, 11*u14 - 12*u13 - 8*u12] 然后我想提取系数,我可以用coefs函数,例如 coeffs(du(:,1)) 返回[3,-1] 我想用for循环来实现这一点,然后将系数插入到矩阵中。在本例中,矩阵将是4乘4,因此我将使用C=zero(4)预加载它。系数,[3,-1]将分别置于C(1,1)和C(1,2)中,而返回[8,-1-3]的系数(du(

我有这样一个符号向量:

du = [3u11 - 1u12, 8*u12 - u11 - 3*u14, 4*u13 - 5*u14, 11*u14 - 12*u13 - 8*u12]
然后我想提取系数,我可以用
coefs
函数,例如

coeffs(du(:,1))
返回
[3,-1]

我想用
for
循环来实现这一点,然后将系数插入到矩阵中。在本例中,矩阵将是4乘4,因此我将使用
C=zero(4)
预加载它。系数,
[3,-1]
将分别置于
C(1,1)
C(1,2)
中,而返回
[8,-1-3]
系数(du(:,2)
)将置于
C(2,2)
C(2,1)
C(2,4)
。因此,
du
中的行将对应于
C
中的行,每个系数名称中的第二个数字(例如,
u12
)将对应于列

好的,这是我的代码:

clc, clear all
k=[1,2,3,4,5];
nodes= [1 2; 2 4; 2 4;2 4; 4 3];
nnodes=4;
nelem=5;

u=sym('u%d%d',[1 nnodes]);

f(u)=sym('f(u)');
f(u)=0;
for i=1:nelem
f=f+0.5*k(i)*(u(nodes(i,2))-u(nodes(i,1)))^2;
end
for i=1:nnodes
du(i)=diff(f,u(i),1);
end

因此,我不知道如何用du的系数制作一个矩阵。哦,它看起来不像是正确格式化的代码,很抱歉!实际问题是什么?请在您这样做的地方使用您的实际代码。确保其他人可以运行它,即定义的所有变量/函数/输入。指出预期的输出是什么,以及任何可能的输出完整的问题。我试图用我的编辑澄清一些事情。希望我能把它做好。而且,
coefs(du(:,1))=[3,-1]
是无效的代码,因为
[3,-1]
是返回值。您仍然需要问一个实际问题并显示您的代码。我添加了代码。我不确定如何从符号表达式中创建一个矩阵并仍然在正确的位置获得系数