-1
コンテキスト:性能解析の一環としてクォーターマイルの時間にテストされる自動車のモーションを記述するプログラムを作成する必要があります。これには、時間、距離、速度、加速度、力、トルク、および回転速度が含まれます。MATLABループインデックスの問題
Iは、(この例では、エンジントルク)コードのどの行と次のエラーが上部にある取得ループの最後で:
「(2)RPMにアクセスしようと;のうちインデックスnumel(RPM)= 1であるため境界があります。
clear all
close all
clc
time(1) = 0; %[seconds]
dist(1) = 0;
vel(1) = 0;
accel(1) = 0;
RPMmin = 1200;
RPM(1) = RPMmin;
r = 19; %[inches]
wt = 3760; %[pounds]
Ng = [3.253, 2.233, 1.611, 1.243, 1, 0.629]; %{Gear Ratio}
Nd = [3.73]; %differential ratio
dt = 0.1; %time increment
for k = 1:1:6
xntt(k) = Ng(k) * Nd;
xmf(k) = 1 + (0.04 * xntt(k)) + (0.0025 * xntt(k)^2);
gst = 0.25; %gear shift time
end
for i = 1:1:1000
Te(i) = 18.154 + (.1571 * RPM(i)) - (0.0000147 * (RPM(i))^2);
fx(i) = Te(i) * xntt(k)/(r/12);
dV(i + 1) = (32.2/(wt * xmf(k)))*fx(i);
accel(i + 1) = dV(i)/dt;
vel(i + 1) = vel(i) + (dV(i) * dt);
dist(i + 1) = dist(i) + vel(i + 1)*dt;
time(i + 1) = time(i) + dt;
RPM(i) = (vel(i + 1)*60*xntt(k))/((2*pi*r)/12);
end
エラーメッセージはかなり自明です...定義される前に 'RPM(i)'にアクセスしようとしています。あなたのコードを見ると、 'i + 1'ではなく、ループ反復' i'に対して 'RPM'を定義していることがわかります。 – excaza
いつものように@excaza、エラーメッセージは自明です:) – dnit13
@ dnit13は必ずしもそうではありません – excaza