2017-10-22 241 views
-1

私はここで問題を解決できません! 私はV(0)= 0をV(1)= 0に変更し、 'インデックスは行列の次元を超えています。'発生したMATLAB(インデックスは正の整数または論理でなければなりません)

i=0; 
m=70; 
C=10; 
g=9.81; 
V(0)=0; 
for t=0:0.25:50 
    V(i+1)=V(i)+(g-(C*V(i))/m)*(t(i+1)-t(i)); 
    i=i+1; 
end 
plot(V(i),t(i)) 
+0

配列のインデックスは、1から始まり、 'V(0)'。 –

+0

はい、私はそれを検索し、私はそれを得ました!次に、v(1)の値を変更します。しかし、インデックスが行列の次元を超えています。 –

+0

あなたは 't(i)'も持っています:forループの最初の反復で 'i'は' 0'です。 –

答えて

0

は、あなたのコード内のいくつかの誤りがあり多くのためhttps://www.mathworks.com/help/matlab/learn_matlab/matrices-and-arrays.html?requestedDomain=www.mathworks.comを参照してください、その配列の値を計算するか、ハードコーディングする必要があるかどうかわかりません:配列Vが初期化されている

  • 開始フォーム0ながら、あなたは、ループの最初の反復では、あなたがt(0)
  • コールにアクセスしようとすると、上記の理由により、i=0を初期化してきたので、MATLABでの配列のインデックスは1
  • から始まりますあなたがforループの最後でiをインクリメントし、さらに、一点のみをプロットしますplot(V(i),t(i))としてplot機能をINGの、V(i)t(i)が実際にループで
  • を計算していないされているtがループインデックスである場合は、t(i+1)にアクセスすることはできませんになり以下のように、それはまだ

を評価されていないHAので、あなたはあなたのコードを変更することができます。

% i=0; 
m=70; 
C=10; 
g=9.81; 
% V(0)=0; 
% Initialize the arrayV 
V(1)=0; 
% Define the time increment 
dt=0.25 
% Define the time samples 
t=0:dt:50 
% for t=0:0.25:50 
% Loop over the time samples 
for idx=1:length(t)-1 
% V(i+1)=V(i)+(g-(C*V(i))/m)*(t(i+1)-t(i)); 
    V(idx+1)=V(idx)+(g-(C*V(idx))/m)*dt; 
% i=i+1; 
end 
% plot(V(i),t(i)) 
plot(t,V) 
grid minor 
xlabel('Time') 
ylabel('Speed') 

enter image description here

01このことができます

希望、あなたが持っている一方で、MATLABで

Qapla」

0

配列Vは別の場所で宣言されていますか?あなたの最初の要素にアクセスしようとしているようですが、配列はまだ初期化されていません。 私はそう

+0

実際に私は自由落下運動のv/tグラフを作ろうとしています –

関連する問題