绘制所需颜色的矩阵

时间:2011-07-08 10:11:57

标签: matlab video colors matrix

如何将某些颜色分配给矩阵中的值。 例如,我有一个10by10矩阵,其值为0到9。 之后我想得到一个“棋盘”,其中0 =白色,1 =黑色,2 =蓝色......等...

第二个问题 如果我运行一些操作,其中我的矩阵随着每个循环而改变,我运行让我们说10 lops(k = 10) - 是否可以在每个循环后我将获得的10个绘图图片中制作视频。 (我正在编程某种细胞自动机,所以我想看看情况如何随时间变化)。

由于

1 个答案:

答案 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);

enter image description here

您可以使用自定义色彩映射,只需创建大小为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);