2013-09-19 13 views
1

У меня есть функция этой формы в MATLAB,Plotting время график в 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.

То, что я сделал, вычисляется e^L отдельно, используя b = expm (L), а затем я ввел mpower (b, t) в функцию. Так что моя Результирующая функция в сценарии выглядит

b=expm(L); 
    C=S*mpower(b,t)*inv(S)*C_0; 

Теперь, как я должен идти о построении этого w.r.t время. Я попытался определить вектор времени и затем использовать его, но вполне очевидно, что получаю сообщение об ошибке, которое говорит, что размеры матрицы не согласуются. Может ли кто-нибудь дать мне предложение?

ответ

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 в каждый момент времени.

+0

@natan Вы правы, исправлены сейчас, спасибо – jazzbassrob

Смежные вопросы