2016-06-14 18 views
3

Ich führe einen Parameter-Sweep durch. Innerhalb einer for-Schleife wird der Wert eines Parameters geändert. Basierend auf diesem Parameter wird ein Plot erstellt und als .tiff Datei gespeichert.Warum haben Matlab-Figuren, die in einer Schleife generiert werden, leicht unterschiedliche Dateigrößen?

bemerkte ich, dass die resultierenden Dateien leicht unterschiedliche Dateigrößen haben, zum Beispiel

215, 222, 223, 215, 210, 196, 195, 195, 195, 195 kB.

Ich fragte mich, warum sie nicht alle genau die gleiche Dateigröße haben?

EDIT: MWE

1. tiff

Executing

for a=1:3 
    b=1:.01:10; 
    h=figure(1); 
    plot(b,sin(a*b)) 
    set(h,'units','normalized','outerposition',[0 0 1 1]); 
    filename=horzcat('test_',num2str(a),'.tiff'); 
    print('-dtiff',filename) 
end 

ergibt 3 Dateien mit resp. Dateigrößen 79, 95, 110kB.

2. bmp

Executing

for a=1:3 
    b=1:.01:10; 
    h=figure(1); 
    plot(b,sin(a*b)) 
    set(h,'units','normalized','outerposition',[0 0 1 1]); 
    filename=horzcat('test_',num2str(a),'.bmp'); 
    print('-dbmp16m',filename) 
end 

ergibt 3 Dateien mit dem gleichen Dateigröße: 3165kB.

+2

Wir brauchen mehr Code, um dazu etwas Nützliches zu sagen. Bitte [bearbeiten] Sie Ihre Frage, um eine [mcve] einzubinden. – Adriaan

+5

Weil [tiff möglicherweise komprimiert ist] (https://en.wikipedia.org/wiki/Tagged_Image_File_Format#Compression)? Probieren Sie ein BMP. Oder kann das auch komprimiert werden? –

+0

@AndrasDeak Guter Punkt, siehe meine Bearbeitung. – Karlo

Antwort

4

Der Unterschied in der Dateigröße ist zu erwarten.

In einem Bitmap-Bild (ohne Komprimierung) wird der Farbwert jedes Pixels in einer Datei gespeichert. Es spielt keine Rolle, ob alle Pixel weiß, schwarz oder was auch immer der Wert von jedem sein wird. Aus diesem Grund werden alle Bitmap-Bilder (gleicher Größe und Farbtiefe) gleich groß sein. Sie verwenden eine 24-Bit-Bitmap, was bedeutet, dass 24 Bits in Ihrer Abbildung pro Pixel zugeordnet sind. More information on bitmaps.

Ein TIFF auf der anderen Seite ist ein wenig komplizierter. Wie @Andras sagte, kann ein TIFF komprimiert werden und die Komprimierung hängt vom Bildinhalt ab. Wenn beispielsweise ein Bild ganz schwarz ist, ist das stark komprimierbar, da es nur einen Farbwert für ein gesamtes Bild gibt (ergibt eine kleinere Dateigröße). Wenn jedes Pixel eine andere Farbe hat, ist dies weniger komprimierbar (was zu einer größeren Dateigröße führt).

In Ihrem Beispiel ändern Sie die Daten im Diagramm, wodurch sich die Verteilung der Pixelfarben in Ihrem gespeicherten Bild ändert, was letztendlich die Dateigröße eines TIFF leicht von Iteration zu Iteration verändern wird. Die einzige Möglichkeit, dass Sie die gleiche Dateigröße erwarten können, ist, wenn Ihre Daten genau das gleiche sind und die Abbildung die gleiche Größe hat.