4. Zelluläre Automaten

In diesem Kapitel soll es um Zelluläre Automaten gehen. Wir wollen ein paar davon programmieren, darstellen und am Schluß ein Video dazu produzieren. Als Anregung siehe:

Visualisierung einer Matrix

Zur Visualisierung einer Matrix A machen Sie sich mit den Matlab-Befehlen spy(A) (Anzeigen der Nicht-Null-Elemente) und surf(A) vertraut. Ein Beispielscript: surf_and_spy.m

Implementierung eines Automaten

Nun wollen wir einen zellulären Automaten implementieren und darstellen.

Um ein Video zu erhalten sollen dabei die einzelnen Frames als Set von Bildern abgespeichert werden. Dazu sollten die Dateinamen mit ausreichend vielen führenden Nullen gebildet werden, also z.B. in einer Schleife, die die Frames produziert mit

for i=1:n
  ...
  fname=sprintf('frames/frame-%06d.png',i )
  ...
end
die Namen generieren und dann den Frame unter diesem Namen speichern.

Video

Aus einer Serie von Bildern in einem Subdirectory mit Namen

frames/frame-000001.png
frames/frame-000002.png
frames/frame-000003.png
...

lässt sich mit ffmpeg über

ffmpeg  -y -i frames/frame-%06d.png -r 30  -vcodec libx264  -pix_fmt yuv420p video.mp4

ein Video produzieren.

Falls jedoch die Frames eine ungerade Pixelzahl in Höhe oder Breite haben, wirft ffmpeg einen Fehler, Abhilfe schafft dann die Option

-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2"
welche eine gerade Pixelzahl erzwingt.