2016-06-17 13 views
0

MATLAB R2016aで単純に区分的に定義された関数をプロットしようとしています。 tが負の場合、このコードはv = 0となり、tが正(またはゼロ)の場合、コードはv = 10*exp(-5000*t)と表示されます。MATLABで区分的に定義された関数をプロットする際のトラブル

t = -0.0014:1e-5:0.0014; 
v = zeros(1, length(t)); 
for i = 1:length(t) 
    if t(i) < 0 
     v(i) = 0; 
    elseif t(i) >= 0 
     v(i) = 10*exp(-5000*t); 
    end 
end 
plot(t, v) 

このMファイルは、私には右に見えますが、私はエラー

In an assignment A(:) = B, the number of elements in A and B must be the same. 

Error in PiecewiseFunction (line 10) 
     v(i) = 10*exp(-5000*t); 

私はそれは単純なものだ疑いを得続けるが、私はちょうどそれを見ることはありません。ここでは、コードです!

+5

'V(1)= 10 *のEXP(-5000 * T(I)); ' – TroyHaskin

+3

Matlabのエラーメッセージが(彼らが通常そうであるように)非常に便利だったとすると、問題は" AとBの要素の数が同じでなければならない " i) 'と' 10 * exp(-5000 * t) 'は異なっていなければなりません。これをさらにデバッグするには、エラーの前に2行に 'size(v(i))'と 'size(10 * exp(-5000 * t))'を実行することができます。これは問題が何であるかを示していたでしょう、そして、それを修正する方法を考える必要があります。 Matlabのエラーメッセージは非常に便利で、それらを読んで、彼らが何を言っているのか考えてみてください! – David

+0

優れたソリューションとコメント! – Andy

答えて

2

問題に関するコメントは、それに答える、しかし、あなたはそれをベクトルならば、あなたは、このコードがはるかに簡単にすることができます

v = 10*exp(-5000*t).*(t >= 0); 
関連する問題