2017-10-22 11 views
-1

Ich kann das Problem hier nicht lösen! ich verändere V (0) = 0 zu V (1) = 0 dann 'Index überschreitet Matrix Dimensionen.' aufgetretenMATLAB (Index muss eine positive Ganzzahl oder logisch sein.)

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

Array-Index ‚Qapla in Matlab beginnt von 1, während Sie' V (0) 'haben. –

+0

Ja, ich suche danach und ich habe es! Dann ändere ich die Werte für v (1). Aber Index überschreitet Matrix Dimension Fehler auftreten –

+0

Sie haben auch 't (i)': bei der ersten Wiederholung der for-Schleife ist 'i' immer noch" 0 ". –

Antwort

0

einige Fehler im Code Es gibt sehen so berechnet oder fest einprogrammiert werden:

  • das Array V initialisiert Ausgangsform 0 während in Matlab beginnt die Array-Index von 1
  • da Sie i=0 aus dem obigen Grund, in der ersten Iteration der Schleife initialisiert haben, versuchen Sie t(0)
  • Anruf zuzugreifen ing die plot Funktion als plot(V(i),t(i)) Sie nur einen Punkt plot zudem i am Ende der for-Schleife erhöht wird, macht V(i) und t(i) ist nicht wirklich
  • in der Schleife berechnet Sie nicht t(i+1) zugreifen, wenn t der Schleifenindex ist da es ha, noch nicht

Sie können den Code ändern wie folgt bewertet worden:

% 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

hoffe, das hilft,

Verwandte Themen