필터 지우기
필터 지우기

How to animate two pendulums in one figure?

조회 수: 2 (최근 30일)
Chet  Price
Chet Price 2012년 5월 9일
Im working on a project for my matlab class. I would like to animate multiple pendulums each with a different length on the same figure. I have seen this done by using simple sin and cos values for the x and y positions. Does anyone have some helpful input or could show me how to do this? Even some similar examples would be great. Here is the code i have, it is currently just a single pendulum.
function project
close all
clear all
%user input
g = 9.8;
L = 1;
L1 = 1.5
m = 1;
alpha = 0.2;
y0Deg = [45 0];
tSpan = [0:.1:30];
%tSpan = [0 30];
y0Rad = y0Deg*pi/180;
[T,Y] = ode45(@pend3,tSpan,y0Rad,[],g,L,m,alpha);
%time series
%plot(T,Y(:,1),'k')
%xlabel('time (s)')
%ylabel('\theta (rad)')
%phase portrait
%figure
%plot(Y(:,1),Y(:,2),'k')
%xlabel('\theta_1')
%ylabel('\theta_2','rotation',0)
animatePendulum(T,Y,L);
%animatePendulum(T,Y,L1);
%animatePendulum(C,F,L1);
hold on
function dydt = pend3(t,y,g,L,mass,alpha)
dydt = zeros(2,1);
dydt(1) = y(2);
dydt(2) = -alpha*y(2)-mass*g/L*sin(y(1));
function animatePendulum(T,Y,L)
nT = length(T);
figure
for ind1 = 1:nT
xTip = L*sin(Y(ind1,1));
yTip = -L*cos(Y(ind1,1));
%xTip1 = (L+.5)*sin(Y(ind1,1));
%yTip1 = (-L-.5)*cos(Y(ind1,1));
plot(0,0,'k.','markersize',15)
hold on
plot([0 xTip],[0 yTip],'k')
plot(xTip,yTip,'ko','markersize',15)
%plot([0 xTip1],[0 yTip1],'k')
%plot(xTip1,yTip1,'ko','markersize',15)
hold off
axis equal
axis([-1 1 -1.8 .2])
drawnow
end

답변 (0개)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by