Imagesc movie with multiple axes/matrices
조회 수: 1 (최근 30일)
이전 댓글 표시
I would like to do the same as this person:
Although, I want multiple axes/matrices in the same movie. I wrote the following code to achieve this:
for i = 1:l
% Switch to first axes
axes(syy_ax)
imagesc(syy(:,:,i))
colorbar
% Switch to second axes
axes(wd_ax)
imagesc(wd(:,:,i))
colorbar
all_mov(i) = getframe;
end
where syy_ax and wd_ax are axis handles, and syy and wd are 3D matrices. I realize how slow this is, but don't know an alternative. I tried specifying the axis in the plot function, but I don't think imagesc supports this. Could anyone suggest another way, please?
댓글 수: 1
Jurgen
2013년 1월 4일
Have you considered concatenating the matrices into 1 matrix if possible?
Also the post you refer to is trying to display something over time, while your use of getframe implies you want to make a movie object?
답변 (3개)
Image Analyst
2013년 1월 4일
편집: Image Analyst
2013년 1월 4일
Well how slow is it? I would think it would be too fast, if anything, and you'd want to put in pauses so the person viewing it will see more than a blip as the movie goes whizzing by. Just how many frames per second is it doing? Or is it so slow we're talking seconds per frame?
Also I'm puzzled by you using imagesc() rather than imshow()? So, you're okay with that bizarre, arbitrary, default colormap that imagesc() applies? Just by the luck of the draw, that happens to be the best colormap for your images? I'm surprised - you're lucky. For me, almost always I don't want the default colormap that imagesc chooses.
Also, please see the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_create_a_movie_from_my_MATLAB_figures.3F You can use export_fig() to save your figure, with both axes on it, out to files that can then be made into frames of your movie.
댓글 수: 0
Evan Kias
2013년 1월 4일
댓글 수: 8
Jurgen
2013년 1월 11일
You can do it in MATLAB with avifile or videowriter, getframe should be faster than export_fig if you intialize a struct array.
That aside, freeware options that come to mind are imagemagick & ffmpeg (both commandline interfaces I believe).
If you insist on saving images, saveas() might be faster than exportfig.
Lastly, either when dumping images or grabbing frames, you may suppress the visible output to speed things up.
Jurgen
2013년 1월 5일
I dont use colorbars often, so this was my initial idea without them:
syy = reshape(syy,[size(syy,1) size(syy,2) 1 size(syy,3)]);
wd = reshape(wd,[size(wd,1) size(wd,2) 1 size(wd,3)]);
DATA = [syy wd]; clear syy wd %data is now formatted (n-m-1-p) and concatenated
MOV = immovie(DATA,jet(256)); %or some other map (< 256).
close;
Note you may need to convert DATA to indexed format (i.e. integers). A quick fix for this would be real2rgb (from the FEX) then rgb2ind.
fps = 5; %framerate
N = 1; %iterations
movie(MOV,N,fps) %Plays movie MOV, N times at fps frames per second.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Animation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!