图形模拟matlab细胞自动机

时间:2017-03-19 17:10:50

标签: matlab animation imshow

我想实现此视频中显示的那种图形模拟 https://www.youtube.com/watch?v=pi256PoyNsg。我已经看到,将函数imshow()正确放置在循环中,您可以制作这种类型的两种颜色的动画。但是,我希望能够添加更多颜色。我有什么选择?

这是我用imshow()做二进制动画的一个例子。矩阵A的每一步都是随机初始化的。

N=100; %Size of matrix
A=rand(N,N); %Matrix with random values between 0 and 1
imshow(A) %Print image
for j=1:1000
   A=rand(N,N); % A is rewritten
   imshow(A) % Reprint matrix 
   pause(0.005) % Wait 
end

1 个答案:

答案 0 :(得分:1)

这里我使用大小为Mx3的预定义RGB颜色调色板,其中M是您想要绘制的颜色总数。

imshow()支持将RGB图像输入作为NxNx3矩阵。

示例代码:

clear;clc;close all

% C is a M-by-3 matrix representing M RGB colors. 
C = [1 1 0;1 0 1;0 1 1];
M = size(C,1);

N=100; %Size of matrix
A=rand(N,N); %Matrix with random values between 0 and 1
imshow(A) %Print image
B = zeros(N,N,3);
for j=1:10
   A=randi(M,N,N); % A is rewritten
   B(:,:,1) = arrayfun(@(ind) C(ind,1), A);
   B(:,:,2) = arrayfun(@(ind) C(ind,2), A);
   B(:,:,3) = arrayfun(@(ind) C(ind,3), A);
   imshow(B) % Reprint matrix 
   pause(0.005) % Wait 
end