Effacer les filtres
Effacer les filtres

How to fix the error?

1 vue (au cours des 30 derniers jours)
Gazza Dazzle
Gazza Dazzle le 2 Sep 2014
Commenté : Gazza Dazzle le 2 Sep 2014
Hi I am not sure how to fix the error in this program, thanks in advance.
clc, clear all, close all
l=0.3; sampling=0.01; runningstep=200; timespan=sampling*runningstep;
x0=[pi/6 0];
%main program for numberical solution k=l; while(k<1000) [t,y]=ode45(@pendulum,[0 sampling], x0, [], l); if k==1 yp(1,:)=y(1,1:2); tp(1,:)=t(1,1); else yp(k,:)=y(size(y,1),1:2); tp(k,1)=sampling*k; end %update date x0=y(size(y,1),1:2); %change initial value k=k+1; end
%animation xa=l*sin(yp(:,1)); ya=-l*cos(yp(:,1)); hp=plot([0,0],[xa(1),ya(1)],'linewidth',2,'Marker','o','Erasemode','xor'); axis([-l -0.1 l+0.1 -l-0.1 l+0.1]); for i=1: size(tp) set(hp,'xdata',[0,xa(i)],'ydata',[0,ya(i)]); drawnow pause(0.001); grid on mov(i)=getframe; end movie2avi(mov,'pendulum.avi')
2nd Function file ------------------------------------------- function dy=pendulum(t,y,l) dy(1,1)=y(2,1); dy(2,1)=-9.81/l*sin(y(1,1));
  2 commentaires
Gazza Dazzle
Gazza Dazzle le 2 Sep 2014
Subscript indices must either be real positive integers or logicals.
Error in pendulum01 (line 18) yp(k,:)=y(size(y,1),1:2);
Pierre Benoit
Pierre Benoit le 2 Sep 2014

Connectez-vous pour commenter.

Réponse acceptée

Yona
Yona le 2 Sep 2014
you start by
l=0.3;
and you put this value in k
k=l;
and because k>1 you do
yp(k,:)=y(size(y,1),1:2);
but you don't have yp(0.3,:).
k need to be positive integer.
  1 commentaire
Gazza Dazzle
Gazza Dazzle le 2 Sep 2014
OH great thanks for your help.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by