2011-02-09 19 views
21

official documentation devletler:MATLAB: .mat sürümleri arasındaki farklar aşağıdaki

enter image description here. Ancak yukarıdaki tabloda belirtilenlerin dışında başka önemli farklılıklar olduğunu fark ettim.

MATLAB bellek 176 MB kaplar yaklaşık 6.000 elemanları ile, bir hücre dizisi tasarrufu Örneğin

, I -v7 veya -v7.3 kullanımı bağlı olarak aşağıdaki sonuçlar verir bana

    -v7 ile
  • : Dosya boyutu = 15 MB ve & yük kaydetmek hızlı olduğunu.
  • -v7.3 ile
  • : Dosya boyutu = 400 MB ve & yük kurtarmanın çokyavaş (muhtemelen çünkü dosya boyutu büyük kısmen).

Bu farklılıkların farkına varmış olan var mı?

Güncelleme 1: cevaplar işaret ettiği gibi, -v7.3 HDF5 dayanır ve bu havai gerçekten olup olmadığı açık olmasa da Mathwork göre , "bu biçim önemli depolama yüke sahiptir" formatın kendisi veya bunun yerine HDL5'in MATLAB uygulaması ve kullanımı nedeniyle.

Güncelleme 2: @ Andrew Janke (görünüşte web'de HTML biçiminde kullanılamaz olan) this very helpful PDF bize işaret ediyor. Daha fazla ayrıntı için, @Amro tarafından sağlanan cevaptaki yorumlara bakın. - v7.3 örn -v7 verimliliğini ve çok büyük dosyaların başa yeteneği (her iki dünyanın en iyisi olan herhangi alternatifler var mıdır:

Bu, tüm sonraki soruya beni alır)?

+0

İlgilenenler, şu son makaleye göz atın: [Kaydetme performansının iyileştirilmesi ce] (http: // undocumentedmatlab.com/blog/iyileştirme-kaydetme-performans /) – Amro

cevap

9

Sürüm 7.3, MAT-dosyaları HDF5 formatını kullanır, bu format, özellikle karmaşık iç içe geçmiş kiler ve yapılar için dosyanın içeriğini tanımlamak için önemli bir depolama yüküne sahiptir. MAT dosyalarının önceki sürümlerine göre ana avantajı, 64 bit sistemlerde 2GB'tan daha büyük veri depolamasına izin vermesidir.

Not v7 ve v7.3 hem sıkıştırılmış ve (v6 aksine) Unicode kodlamayı kullanmak, yine de birbirinden tamamen farklı biçimleri ...

Kaynaklar şunlardır olduğunu:

+2

Teşekkürler @Amro. "Önemli depolama yükü", aynı veriler için 15 MB yerine 400 MB yerine ihtiyacımız olduğu anlamına geldiğinden endişeleniyorum, ama sanırım bu her şeyi açıklıyor. –

+5

@AmV: Hücre ve yapı dizileriyle ilgili olan şey, heterojen veri türlerini depolayabilmeleri ve her türün "açıklanması" gerektiğidir. Eğer iki formatı (v7/v7.3) normal bir MATLAB "double" matrisi ile karşılaştırırsanız (örn .: M = rand (3000,3000); v7.mat M -v7'yi kaydedin; v73.mat M -v7'yi kaydedin. 3'), benzer dosya boyutları alırsınız. Diğer taraftan, yukarıdaki matrisi bir hücre dizisi ile değiştirin ('M = num2cell (M);') ve büyüklükte büyük bir fark göreceksiniz ... – Amro

+6

Ayrıca bkz. Http://www.mathworks.com/help MAT dosya formatının tam açıklaması için /pdf_doc/matlab/matfile_format.pdf. HDF5 genel amaçlı bir format olduğundan, bazı tanımlayıcı tip bilgisi başlıklarda dizelerle yapılır (örneğin "MATLAB_class", "double"). MAT formatında, yerleşik Matlab türleri, bir çift bayta sığabilen ikili sihirli çerezlerle tanımlanır, böylece MAT başlıkları 56 bayt kadar küçük olabilir. Linux veya cygwin kullanıyorsanız, "h5dump -p" ve "od -c", v7.3 dosyalarındaki başlıkların görünümünü size verecektir. –

İlgili konular