「連結する配列の次元​が一致しません」とい​うエラーを解決するに​はどうすればよいです​か?

21 次查看(过去 30 天)
侑泰 張
侑泰 張 2023-6-15
振幅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;          %レート方程式の条件値
Invalid text character. The text '          ' contains an unsupported non-ASCII whitespace character.
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 个)

类别

Help CenterFile Exchange 中查找有关 常微分方程式 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!