저는 Matlab을 처음 사용하고 여러 곡선 (Legendre 다항식)의 .avi 파일을 만들기 위해 각 곡선을 따라 빨간색 점이 그려지는 것으로 추적하고 있습니다. 전에 파라 메트릭 방정식과 linspace를 사용하여이 작업을 수행 했으므로 제대로 작동하는 것으로 보입니다. 나는 코드가 기본적으로 내가 여기서 뭘 원하는거야 무엇에 대해 동일 할 것이라고 생각,하지만 난 프로그램 실행하려고 다음과 같은 오류 메시지가 매번 점점 계속 :Matlab에서 여러 플롯을 사용하여 동영상 만들기
이??? Index exceeds matrix dimensions.
Error in ==> legpolymov at 25
plot(x(1:2*i),y0(1:2*i));
내 코드가 아래에 나열되어 . 내가 잘못하고 있거나 실종 된 일이 있습니까, 아니면 내가하려고하는 일을 더 효율적으로/효율적으로 할 수있는 방법이 있습니까?
감사합니다.
clc
clear all;
close all;
delete legpolymov.txt
diary legpolymov.txt
figure
hold all
t=linspace(-2,2,500);
x = t;
y0 = 1;
y1 = t;
y2 = (3/2)*t.^2 - (1/2);
y3 = (5/2)*t.^3 - ((3/2)*t);
y4 = (3/8) - ((15/4)*t.^2) + ((35/8)*t.^4);
y5 = ((15/8)*t) - ((35/4)*t.^3) + ((63/8)*t.^5);
plot(x,y0)
plot(x,y1)
plot(x,y2)
plot(x,y3)
plot(x,y4)
plot(x,y5)
axis equal
M=moviein(50);
for i=1:50
plot(x(1:2*i),y0(1:2*i));
plot(x(1:2*i),y1(1:2*i));
plot(x(1:2*i),y2(1:2*i));
plot(x(1:2*i),y3(1:2*i));
plot(x(1:2*i),y4(1:2*i));
plot(x(1:2*i),y5(1:2*i));
hold all
plot(x(2*i),y0(2*i),'k*');
plot(x(2*i),y1(2*i),'k*');
plot(x(2*i),y2(2*i),'k*');
plot(x(2*i),y3(2*i),'k*');
plot(x(2*i),y4(2*i),'k*');
plot(x(2*i),y5(2*i),'k*');
axis([-2 2 -1 1])
a = texlabel('alpha');
title('Legendre Polynomials for (1-x^2)y''''-2xy''+ \alpha * (\alpha +1) = 0');
xlabel('x-axis')
ylabel('y-axis')
M(i)=getframe;
hold off
end
movie(M)
movie2avi(M,'Legendre1','FPS',7)
diary off
아래의 질문에 대한 완벽한 답변 외에; 각 루프마다 새로운 줄거리를 만드는 것은 느립니다. 예를 들어, 필요한 점의 전체 집합을 생성하고 'get'(예 : 'get (h,'XData ')') 및 'set'명령으로 이동하거나 단일 점을 만들어 주변을 이동할 수 있습니다 그림에서 오래된 값을 제거하지 마십시오 ('에라 모드'참조). 각 루프에서 그림을 업데이트하려면 'drawnow'를 사용하십시오. –
@ A.Klomp - 아주 좋은 지적입니다! – rayryeng