この例検討ありがとう:
%# lets create a 10-by-10 matrix, of values in the range [0,9]
M = fspecial('gaussian',10,2.5);
M = (M-min(M(:))) ./ range(M(:));
M = round(M*9);
%# prepare video output
vid = VideoWriter('vid.avi');
vidObj.Quality = 100;
vid.FrameRate = 5;
open(vid);
%# display matrix
h = imagesc(M);
axis square
caxis([0 10])
colormap(jet(10))
colorbar
%# capture frame
writeVideo(vid,getframe);
%# iterate changing matrix
for i=1:50
M = rem(M+1,10); %# circular increment
set(h, 'CData',M) %# update displayed matrix
writeVideo(vid,getframe); %# capture frame
drawnow %# force redisplay
end
%# close and save video output
close(vid);
あなたは、単にサイズ10×3のマトリックスcmap
を作成し、カスタムカラーマップを使用することができるが、各列は、RGBを含ん値を入力して電話に渡すcolormap(cmap)
R2010bよりも古いMATLABバージョンの場合
、あなたの代わりにVideoWriterの、avifile機能を使用することができます:M =(M-分(M(:)):あなたはこれをしなかった理由を
%# prepare video output
vid = avifile('vid.avi', 'fps',5, 'quality',100);
%# iterations
for i=1:50
%# ...
%# capture frame
vid = addframe(vid, getframe(gcf));
drawnow
end
%# close and save video output
vid = close(vid);
おかげで、私は理解していません)./ range(M(:));範囲(M(:))が1で、M-min(M(:))を1で割った値が同じ場合は? – kojikurac
どうすればそれを書く:vid = VideoWriter( 'vid.avi'); matlabが返す:???未定義の関数またはメソッド 'VideoWriter'は、 'char'型の入力引数ですか? – kojikurac
@kojikurac:最初の3行は、記述したようなサンプル行列(0から9の自然数を含む)を作成するためのものでした。これはあなたが持っている実際のデータに置き換えてください。他の部分については、VideoWriterがMATLAB R2010bで導入されました。古いバージョンの場合は、古い 'avifile'関数を使うことができます。この関数の使い方を示す答えを更新します。 – Amro