Borrar filtros
Borrar filtros

How to fix the error?

1 visualización (últimos 30 días)
Gazza Dazzle
Gazza Dazzle el 2 de Sept. de 2014
Comentada: Gazza Dazzle el 2 de Sept. de 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 comentarios
Gazza Dazzle
Gazza Dazzle el 2 de Sept. de 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 el 2 de Sept. de 2014

Iniciar sesión para comentar.

Respuesta aceptada

Yona
Yona el 2 de Sept. de 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 comentario
Gazza Dazzle
Gazza Dazzle el 2 de Sept. de 2014
OH great thanks for your help.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by