2010-10-26 20 views
13

Bir MAT dosyasında büyük bir yapı var. İçerikler çok büyük olduğundan ve bellek kullanımını en aza indirmek istediğimden MAT dosyasını yüklerken yapısında yapısında belirli bir alanın olup olmadığını kontrol etmek istiyorum. MATLAB'da bir MAT dosyasının içeriğini yüklemeden nasıl kontrol edebilirim?

bu mümkün mü, yoksa Bildiğim kadarıyla, kaydedilmiş bir kontrol edebilmek amacıyla dosyayı yüklemek zorunda bildiği gibi aşağıdaki örnekte ?:

load('test.mat');    %# Load the MAT-file 
tf = isfield(s,'fieldname'); %# Check if structure s has field 'fieldname' 

cevap

22

kullanın yüklemeden olmadan MAT dosyasının içeriğini kontrol etmek?
+0

'test.mat' içindeki yapıların alanları için o çalışıyor mu: – Jonas

+0

@Jonas: Yukarıdaki kod sadece değişken isimlerini kontrol eder. Cevabınızda bahsettiğiniz gibi, kullanıcı bir MAT dosyasına kaydederken yapı alanlarını ayrı değişkenlere bölmek için SAVE '-struct' seçeneğini kullanmalıdır. – Amro

+2

@Jonas: aksi halde, kullanıcı bellek kullanımıyla ilgili gerçekten endişe duyuyorsa, alan adlarını gerçek MAT-dosyasıyla birlikte ayrı bir metin dosyasına yazabilir, ardından gerçek yapısını yüklemeden önce metin dosyasını gerektiği gibi yükleyebilir ve kontrol edebiliriz. data – Amro

6

ilk gibi yüklemek gerekir yapı belirli bir alan içerir.

Ancak, .mat dosyasını '-struct'-option ile kaydederseniz, alanları .mat dosyasındaki ayrı değişkenlere ayırır. Bu yol da, bir alan (değişken) (Daha önce önerilen olandan çok daha temiz olduğunu) @Amro yaklaşımını kullanarak var olup olmadığını test etmek için izin verir

myStructure = load('test.mat'); 

Kaydetme arayarak yapıyı yeniden oluşturabilirsiniz.

vars = whos('-file','test.mat') 
ismember('fieldname', {vars.name}) 
İlgili konular