How can I make a movie with one multidimensional matrix in MATLAB

18 vues (au cours des 30 derniers jours)
yogan sganzerla
yogan sganzerla le 28 Sep 2017
Modifié(e) : OCDER le 29 Sep 2017
Hello, I have a multidimensional matrix in MatLab -> T(41,41,501) and I would like to memorize all this matrix in a movie. What should I do?
I read that the function is VideoWriter but I couldn't make the video. I am attaching the matrix.
cheers.

Réponse acceptée

OCDER
OCDER le 28 Sep 2017
VidObj = VideoWriter('movie.avi', 'Uncompressed AVI'); %set your file name and video compression
VidObj.FrameRate = 30; %set your frame rate
open(VidObj);
for f = 1:size(T, 3)
writeVideo(VidObj, T(:, :, f));
end
close(VidObj);
  4 commentaires
yogan sganzerla
yogan sganzerla le 29 Sep 2017
Modifié(e) : yogan sganzerla le 29 Sep 2017
Perfect Donald, It worked very well. I am adding a new version of the code to show how it is working now. The movie is playing just the last position of the matrix. Why it's happening? Cheers
OCDER
OCDER le 29 Sep 2017
Modifié(e) : OCDER le 29 Sep 2017
It's only saving the current figure, and not all figures.
set(gca,'nextplot','replacechildren');
for f = 1:size(T,3)
frame = getframe(gcf); %Only saving one figure, regardless of frame f
writeVideo(VidObj,frame);
end
close(VidObj);
Are you plotting T somewhere and then saving a plot of T(:, :, f)? If so, you need to plot inside the for loop. If you want to save T only after normalizing, use this:
T = T / max(T(:));
VidObj = VideoWriter('movie.avi', 'Uncompressed AVI'); %set your file name and video compression
VidObj.FrameRate = 30; %set your frame rate
open(VidObj);
for f = 1:size(T,3)
writeVideo(VidObj, T(:, :, f));
end
close(VidObj);

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by