2017-03-19 5 views
0

Ich würde gerne die Art von Grafik-Simulation in diesem Video gezeigt https://www.youtube.com/watch?v=pi256PoyNsg implementieren. Ich habe gesehen, dass man mit der Funktion imshow(), die richtig in einer Schleife platziert ist, Animationen von zwei Farben dieses Typs machen kann. Ich würde jedoch gerne mehr Farben hinzufügen können. Was sind meine Möglichkeiten?Grafische Simulation Matlab Cellular Automaten

Dies ist ein Beispiel dafür, was ich tun würde, um eine binäre Animation mit imshow() zu machen. Bei jedem Schritt wird die Matrix A zufällig initialisiert.

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

Ihre Frage sieht ganz einfach, aber in Ordnung, die wir getan, um ein [MCVE] – Yvon

Antwort

1

Hier verwende ich eine vordefinierte RGB-Farb palatte der Größe Mx3 wo M die Gesamtzahl der Farben, mit denen Sie zeichnen möchten ist.

imshow() unterstützt RGB Bildeingabe als NxNx3 Matrix.

Beispielcode:

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 
+0

@Fisiquin zu helfen. – Yvon