0

1001x2 の y 行列があり、各列は発振器の位相角を表します。時間 t で両方の位相角を一度に 1 つずつプロットするように、matlab ムービーを作成しようとしています。したがって、基本的には、円を描いて移動する 2 つのポイントのように見えるはずです。プロットを保持すると、すべてのポイントがフレーム上にあることを除いて、正しいように見えます。しかし、私が我慢しないと、各反復で 2 番目のプロットのみが表示されます (フレームごとに赤い * のみが表示されます)。何が起こっているのか、どのようにして両方のポイントを各フレームに表示させることができるのでしょうか?

fig1=figure(1);
winsize = get(fig1,'Position');
winsize(1:2) = [0 0];
numframes=100;
A=moviein(numframes,fig1,winsize);
set(fig1,'NextPlot','replacechildren')
i=1;

%hold on
for frame=1:numframes
i=frame*10;
plot(cos(mod(y(i),2*pi)),sin(mod(y(i),2*pi)),'bo');
plot(cos(mod(y(i,2),2*pi)) *1.1,sin(mod(y(i,2),2*pi))*1.15,'r*'); %only this one is shown
axis([-1.5 1.5 -1.5 1.5])
A(:,i)=getframe(fig1,winsize);
end 
4

1 に答える 1

1

hold onフレーム描画中とフレーム描画hold offの最後に行うことができます。お気に入り

 for frame=1:numframes
 i=frame*10;

 plot(cos(mod(y(i),2*pi)),sin(mod(y(i),2*pi)),'bo');   
 hold on   % // here
 plot(cos(mod(y(i,2),2*pi)) *1.1,sin(mod(y(i,2),2*pi))*1.15,'r*');
 axis([-1.5 1.5 -1.5 1.5])
 A(:,i)=getframe(fig1,winsize);
 hold off  % // and here
 end 

しかし、この場合、あなたは簡単に行うことができます

 ....
 plot(cos(mod(y(i),2*pi)),sin(mod(y(i),2*pi)),'bo', ... 
     cos(mod(y(i,2),2*pi)) *1.1,sin(mod(y(i,2),2*pi))*1.15,'r*');
于 2012-12-02T19:16:19.830 に答える