Animated Gif mit Matlab erstellen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Prof. Ulrich Schneider


Lektion: Animated Gif erstellen

In dieser Lektion lernen Sie, ein Animated Gif mit Matlab zu erstellen.

Zeitumfang: 45 Minuten

Aufgabe

  • Simulieren Sie zyklisch einen variierenden Funktionsgrafen, der sich mit der Zeit verändert.
  • Speichern Sie die Einzelbilder in einer n-dimensionalen Matrix ab.
  • Speichern Sie diese Matrix als animierte Bilddatei Animated.gif ab.

Tipp: verwenden Sie zum Zusammenfügen der Bilder

imwrite(ImageData,map,filename,'gif','WriteMode','append')

Musterlösung

Beispiel

Lektion: Video aus Simulation erstellen

Geschützte p-Funktion erzeugen

Wenn man eine m-Funktion schützen möchte, so dass sie zwar verwendbar, jedoch nicht einsehbar ist, lässt sich diese mit einem Schritt in eine p-Funktion (protected function) umwandeln.

pcode(fun)
x = 0:0.01:1;
% Grafik erstellen
figure(1)
% Dateiname festlegen
filename = 'AnimatedGif.gif';
% 2 fps
for n = 1:0.5:5
      y = x.^n;
      plot(x,y)
      drawnow
      frame = getframe(1);
      im = frame2im(frame);
      [imind,cm] = rgb2ind(im,256);
      if n == 1;
          imwrite(imind,cm,filename,'gif', 'Loopcount',inf);
      else
          imwrite(imind,cm,filename,'gif','WriteMode','append');
      end
end


Ergebnis

Beispiel 2

Z = peaks;
surf(Z)
axis tight
set(gca,'nextplot','replacechildren','visible','off')
f = getframe;
[im,map] = rgb2ind(f.cdata,256,'nodither');
im(1,1,1,20) = 0;
for k = 1:20
  surf(cos(2*pi*k/20)*Z,Z)
  f = getframe;
  im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');
end
imwrite(im,map,'DancingPeaks.gif','DelayTime',0,'LoopCount',inf)

Ergebnis

Medium:AnimatedGif2.m

<img vspace="5" hspace="5" src="AnimatedGif_01.png" alt="">

Beispiel 3

x = 0:0.01:2*pi;
omega = 0.5;
k = 1;
% Ausgabedatei
outfile = 'sinewave.gif';
for t=1:50

    plot(x, sin(omega*t + k*x), 'linewidth', 2, 'color', 'red');
    ylim([-1 1]);
    xlim([0 2*pi]);
    grid on;

    % gif utilities
    set(gcf,'color','w'); % set figure background to white
    drawnow;
    frame = getframe(1);
    im = frame2im(frame);
    [imind,cm] = rgb2ind(im,256);

    % On the first loop, create the file. In subsequent loops, append.
    if t==1
        imwrite(imind,cm,outfile,'gif','DelayTime',0,'loopcount',inf);
    else
        imwrite(imind,cm,outfile,'gif','DelayTime',0,'writemode','append');
    end
end

Ergebnis

Medium:AnimatedGif4.m

Quelle: [1]


→ zurück zum Hauptartikel: Einführung in MATLAB