「連結する配列の次元が一致しません」というエラーを解決するにはどうすればよいですか?
22 ビュー (過去 30 日間)
古いコメントを表示
振幅0.1A, 周期が6*10^-9の正弦波の正の部分の波形をもつ電流を作成し, 作成したレート方程式[t,y]の関数に代入し, ode45コードで積分したいと考えているのですが, 連結する配列の次元が一致しませんというコードが出てエラーが起きてしまいます.
電流値が0の時まではグラフが出てくるのですが, 正弦波を代入したグラフが表示されません.
以下がコードです. どう変更すればエラーがなくなるのか教えていただきたいです.
v = 8.79*10^7;
A = 6.42*10^-20;
a = 5.46*10^-23;
Ntr = 4.95*10^24;
G = 5*10^-2;
tp = 2*10^-12;
ts = 7.8*10^-10;
V = 2.16*10^-17;
e = 1.64*10^-19;
c = 0.001; %レート方程式の条件値
I1 = 0; %電流ゼロのとき
t0 = 0:10^-12:3*10^-9;
I = 100*10^-3*sin(pi*t0*10^9/3); %正弦波
y0 = [0;0]; %レート方程式の初期条件
[t,y] = ode45(@(t,y) [I1/(e*V)-y(1)/ts-(v*A*(y(1)-Ntr)*y(2))/(1+a*y(2)); (G*v*A*(y(1)-Ntr)/(1+a*y(2))-1/tp)*y(2)+c*y(1)/ts],[-1*10^-9 0],y0);
%電流値ゼロをレート方程式に代入して積分
figure(1);
plot(t,y(:,1))
xlim([-1*10^-9 10*10^-9]);
hold on
y1 = [0.001;0.001]; %初期条件 限りなくゼロに近い値が好ましい
[t,y] = ode45(@(t,y) [I/(e*V)-y(1)/ts-(v*A*(y(1)-Ntr)*y(2))/(1+a*y(2)); (G*v*A*(y(1)-Ntr)/(1+a*y(2))-1/tp)*y(2)+c*y(1)/ts],[0 3*10^-9],y1);
%正弦波をレート方程式に代入
plot(t,y(:,1))
0 件のコメント
回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!