2016-04-08 32 views
0

Çevrimdışı ve çevrimiçi verilerden oluşan geniş bir veri kümesine sahibim, çevrimdışı veriler yalnızca her iki saatte bir alınır, böylece boşluklar arasında ara yüz oluşturmak istesin. Verilerin eksik olduğu yerde -9.999 ile değiştirilir. Bu değerleri tahmin etmek için interpolasyon yapmak istiyorum. Benim fikrim zaman aralıklarında göre karşılaştırma yapmayı sette eksik değerleri bulmak için, ama o Bu defa ne varMatlab veri kümesinin interpolasyonu için Interp1 kullanan Matlab

işe alınamıyor:

iv = 33; % column which holds cell weight 
ind = find (Data(:,iv)<0); % find the indices of missing values 
Interp_iv = interp1 (Data(ind,2),Data(ind,2),Data(:,2),'spline') 
+0

Birinci ve ikinci parametreler aynıdır. 'Veri 'ne içerir? Yapısı hakkında daha fazla bilgi verebilir misiniz? – rayryeng

+0

Veri, 4750 x 49 sayısal bir dizidir, değişken zaman aralıklarında (yaklaşık her 0.2 saatte) çoklu gruplar için zaman, sıcaklık, besleme ekt gibi çevrim değişkenlerine sahiptir, ayrıca her 2 saatte bir kez alınan çevrimdışı değişkenler de vardır iki saat arasında -9.990 aka NaN değil (bunlar enterpolasyonlu sayılarla değiştirmek istediğim değerlerdir, –

cevap

0

Kişisel x ve v Aynı bunu deneyin:

interp1 (Data(ind,2),Data(ind,iv),Data(:,2),'spline') 
+0

Bu aldığım hata mesajı: griddedInterpolant kullanarak hata Izgara vektörleri benzersiz noktalar içermelidir. interp1 içinde hatası (hat 161) F = griddedInterpolant (X, V, yöntem); DataTreatment (hat 10) D = interp1 (Verileri (ind, 2), veri (ind, iv) ve Veri (içinde hata :, 2), 'eğri') –