Save the quiver plot as a video
이전 댓글 표시
Hello, I am trying to save the quiver plot as a .avi movie. I am including my code here:
hFig = figure;
subplot(1,2,1);
set(hFig, 'Position', [0 0 1000 1000]); % to define Figure Properties
stlgeometrie=stlread('gehause_Bmuster.stl');
geoplot(stlgeometrie);
axis([-200 200 -200 200 -200 200]);
view([0 0]);
hold on;
subplot(1,2,2);
set(hFig, 'Position', [0 0 1000 1000]); % to define Figure Properties
stlgeometrie=stlread('gehause_Bmuster.stl');
geoplot(stlgeometrie);
axis([-200 200 -200 200 -200 200]);
view([60 0]);
hold on;
for e = 1:length(range);
a=0.1;
subplot(1,2,1);
q1 = quiver3(x,y,z, a*mag_X(21,:)'.*cos(Ph_X(21,:)'+range(e)), a*mag_Y(21,:)'.*cos(Ph_Y(21,:)'+range(e)), a*mag_Z(21,:)'.*cos(Ph_Z(21,:)'+range(e)),0,'MarkerSize',3,'LineWidth',1.5,'MaxHeadSize',0.1);
subplot(1,2,2);
q2 = quiver3(x,y,z, a*mag_X(21,:)'.*cos(Ph_X(21,:)'+range(e)), a*mag_Y(21,:)'.*cos(Ph_Y(21,:)'+range(e)), a*mag_Z(21,:)'.*cos(Ph_Z(21,:)'+range(e)),0,'MarkerSize',3,'LineWidth',1.5,'MaxHeadSize',0.1);
M{e} = getframe;
Fz(e) = mag_Z(100,1)'.*cos(Ph_Z(100,1)'+range(e));
delete(q1);
delete(q2);
end
movie(cell2mat(M));
movie2avi(cell2mat(M),'MyMovie.avi','Compression','None');
When I use the following code, I can only see the video of second sub-plot and the video doesn't contain the video, but just a image of the second sub-plot. I just want to save the video which gets displayed because of the quiver command. I am also attaching my workspace variables with this query! Thank you in advance!
답변 (1개)
Walter Roberson
2015년 11월 30일
M{e} = getframe(gcf);
Note: this will capture the entire figure, including window decorations. getframe() captures an axes or a figure, but you are creating multiple axes so you need to save the figure.
댓글 수: 5
Karthik Brs
2015년 11월 30일
Walter Roberson
2015년 11월 30일
I suggest trying
M(e) = getframe(gcf);
and movie(M) and
movie2avi(M,'MyMovie.avi','Compression','None');
If nothing else these should be a little more efficient.
Also I recommend using an explicit 'fps' parameter even if you do want the default 15 fps -- it makes it clear to other people reading that you thought about the frame rate.
But movie2avi() is going away soon and it is recommended that you switch to VideoWriter, which might also cure the problem with last frame.
fps = 15; %to match movie2avi
v = VideoWriter('MyMovie.avi', 'Uncompressed AVI', 'FrameRate', fps);
open(v);
writeVideo(v, M);
close(v);
Karthik Brs
2015년 12월 1일
편집: Walter Roberson
2015년 12월 1일
Walter Roberson
2015년 12월 1일
I think it is time for me to go to bed (in a literal sense.)
Karthik Brs
2015년 12월 1일
카테고리
도움말 센터 및 File Exchange에서 Audio and Video Data에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!