如何将某些颜色分配给矩阵中的值。 例如,我有一个10by10矩阵,其值为0到9。 之后我想得到一个“棋盘”,其中0 =白色,1 =黑色,2 =蓝色......等...
第二个问题 如果我运行一些操作,其中我的矩阵随着每个循环而改变,我运行让我们说10 lops(k = 10) - 是否可以在每个循环后我将获得的10个绘图图片中制作视频。 (我正在编程某种细胞自动机,所以我想看看情况如何随时间变化)。
由于
答案 0 :(得分:1)
考虑这个例子:
%# 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 x 3的矩阵cmap
,每行包含RGB值,并将其传递给调用colormap(cmap)
对于早于R2010b的MATLAB版本,您可以使用avifile功能,而不是VideoWriter:
%# 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);