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

21 views (last 30 days)
侑泰 張
侑泰 張 on 15 Jun 2023
振幅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))

Answers (0)

Categories

Find more on 常微分方程式 in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!