Save the quiver plot as a video
Show older comments
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!
Answers (1)
Walter Roberson
on 30 Nov 2015
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 Comments
Karthik Brs
on 30 Nov 2015
Walter Roberson
on 30 Nov 2015
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
on 1 Dec 2015
Edited: Walter Roberson
on 1 Dec 2015
Walter Roberson
on 1 Dec 2015
I think it is time for me to go to bed (in a literal sense.)
Karthik Brs
on 1 Dec 2015
Categories
Find more on Audio and Video Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!