我在MATLAB中有这种形式的功能,
C=S*e^(L*t)*inv(S)*C_0
我的
S=[-2 -3;3 -2]
L=[0.5 0; 0 1.5]
C_0=[1; 1]
我需要根据时间绘制这个函数。我的输出C是一个2乘1的矩阵。
我所做的是使用b = expm(L)分别计算e ^ L然后我将mpower(b,t)插入到函数中。所以我在脚本中生成的函数看起来像
b=expm(L);
C=S*mpower(b,t)*inv(S)*C_0;
现在,我应该如何绘制这个w.r.t时间。我尝试定义时间向量然后使用它,但很明显我收到错误消息,表明矩阵维度不一致。有人可以给我一个建议吗?
答案 0 :(得分:0)
你可以用矢量化的方式做到这一点,但如果你不担心速度或简洁的代码,为什么不写一个for
循环?
ts = 1 : 100;
Cs = zeros(2, length(ts) );
S = [-2 -3;3 -2];
L = [0.5 0; 0 1.5];
C_0 = [1; 1];
for ii = 1 : length(ts)
b = expm(L);
Cs(:,ii) = S*mpower(b,ts(ii))*inv(S)*C_0;
end
ts
包含时间值,Cs
每次都包含C
的值。