2016-04-08 5 views
0

Ich habe einen großen Datensatz von Offline- und Online-Daten, Offline-Daten werden nur alle zwei Stunden genommen, um zwischen den Lücken zu interpolieren. Wo die Daten fehlen, wird es durch -9.999 ersetzt. Ich möchte interpolieren, um diese Werte zu schätzen. Meine Idee ist es, die fehlenden Werte in der Menge zu finden gegen die Zeitintervalle zu vergleichen, aber ich kann es nichtMatlab mit Interp1 zur Interpolation des matrx-Datensatzes

Dies ist zu arbeiten, was ich habe, so weit:

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

Die ersten und zweiten Parameter sind die gleichen. Was beinhaltet "Daten"? Kannst du mehr Details zu seiner Struktur angeben? – rayryeng

+0

Daten sind ein 4750 x 49 numerisches Array, es hat Online-Variablen wie Zeit, Temperatur, Feed ect für mehrere Chargen in unterschiedlichen Zeitintervallen (ca. alle 0,2 Stunden) und hat Offline-Variablen, die alle 2 Stunden genommen werden zwischen den zwei Stunden habe ich die -9.990 aka nicht NaN (das sind die Werte, die ich mit den interpolierten Zahlen ersetzen möchte, –

Antwort

0

Ihre x und v die Gleiches versuchen Sie dieses:

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

Dies ist die Fehlermeldung, die ich bekomme: Fehler mit griddedInterpolant Die Gitter Vektoren müssen eindeutige Punkte enthalten. Fehler in interp1 (Zeile 161) F = griddedInterpolant (X, V, Verfahren); Fehler in DataTreatment (Zeile 10) D = interp1 (Data (ind, 2), Daten (ind, iv), Daten (:, 2), 'Spline') –