not enough input argument

7 views (last 30 days)
Welid Benchouche
Welid Benchouche on 2 Apr 2015
hi guys,i have a problem trying to run this code : function double_pendulum(ivp, duration, fps, movie) % DOUBLE_PENDULUM Animates the double pendulum's (mostly) chaotic behavior. % % author: Alexander Erlich (<mailto:alexander.erlich@gmail.com alexander.erlich@gmail.com>) % % parameters: % % ivp=[phi1; dtphi1; phi2; dtphi2; g; m1; m2; l1; l2] % % Initial value problem. phi1 and dtphi1 are % the initial angle and anglular velocity. g % is gravity, m1 and l1 mass and rod length. % For an explaining picture, see % documentation file in same folder. % % duration The time interval on which the ode is % solved spans from 0 to duration (in sec). % % fps Frames Per Second. The framerate is % relevant both for normal (realtime) % animation and movie recording. % % movie If false, a normal realtime animation of % the motion of the double pendulum (the % framerate being fps) is shown. % If true, a movie (.avi) is recorded. The % filename is 'doublePendulumAnimation.avi' % and the folder into which it is saved is % the current working directory. % % This function calls double_pendulum_ODE and is, in turn, called by % double_pendulum_init. % % Example call: >> double_pendulum([pi;0;pi;5;9.81;1;1;2;1],100,10,false) % Or, simply call >> double_pendulum_init % % ---------------------------------------------------------------------
clear All; clf;
nframes=duration*fps; % here is where the error occurs sol=ode45(@double_pendulum_ODE,[0 duration], ivp); t = linspace(0,duration,nframes); y=deval(sol,t);
phi1=y(1,:)'; dtphi1=y(2,:)'; phi2=y(3,:)'; dtphi2=y(4,:)'; l1=ivp(8); l2=ivp(9); % phi1=x(:,1); dtphi1=x(:,2); % phi2=x(:,3); dtphi2=x(:,4); % l1=ivp(8); l2=ivp(9);
h=plot(0,0,'MarkerSize',30,'Marker','.','LineWidth',2); range=1.1*(l1+l2); axis([-range range -range range]); axis square; set(gca,'nextplot','replacechildren');
for i=1:length(phi1)-1
if (ishandle(h)==1)
Xcoord=[0,l1*sin(phi1(i)),l1*sin(phi1(i))+l2*sin(phi2(i))];
Ycoord=[0,-l1*cos(phi1(i)),-l1*cos(phi1(i))-l2*cos(phi2(i))];
set(h,'XData',Xcoord,'YData',Ycoord);
drawnow;
F(i) = getframe;
if movie==false
pause(t(i+1)-t(i));
end
end
end
if movie==true
movie2avi(F,'doublePendulumAnimation.avi','compression','Cinepak','fps',fps)
end
it says(not enough input argument in this line)
nframes=duration*fps;

Answers (0)

Categories

Find more on Animation in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!