MATLAB: Verwenden der Interpolation zum Ersetzen fehlender Werte (NaN)

Ich habe ein Zellenarray, das jeweils eine Folge von Werten als Zeilenvektor enthält. Die Sequenzen enthalten einige fehlende Werte, die durch @ dargestellt werdeNaN.

Ich möchte alle NaNs mit einer Art Interpolationsmethode ersetzen. Wie kann ich dies in MATLAB tun? Ich bin auch offen für andere Vorschläge zum Umgang mit diesen fehlenden Werten.

Betrachten Sie diese Beispieldaten, um das Problem zu veranschaulichen:

seq = {randn(1,10); randn(1,7); randn(1,8)};
for i=1:numel(seq)
    %# simulate some missing values
    ind = rand( size(seq{i}) ) < 0.2;
    seq{i}(ind) = nan;
end

Die resultierenden Sequenzen:

seq{1}
ans =
     -0.50782     -0.32058          NaN      -3.0292     -0.45701       1.2424          NaN      0.93373          NaN    -0.029006
seq{2}
ans =
      0.18245      -1.5651    -0.084539       1.6039     0.098348     0.041374     -0.73417
seq{3}
ans =
          NaN          NaN      0.42639     -0.37281     -0.23645       2.0237      -2.2584       2.2294

Bearbeiten

Basierend auf den Antworten, denke ich, gab es eine Verwirrung: offensichtlich arbeite ich nicht mit zufälligen Daten, der oben gezeigte Code ist nur ein Beispiel dafür, wie die Daten strukturiert sind.

Die tatsächlichen Daten sind irgendeine Form von verarbeiteten Signalen. Das Problem ist, dass meine Lösung während der Analyse scheitern würde, wenn die Sequenzen fehlende Werte enthalten, daher muss gefiltert / interpoliert werden (ich habe bereits überlegt, den Mittelwert jeder Sequenz zu verwenden, um die Lücken zu füllen, aber ich hoffe auf etwas Stärkeres).

Antworten auf die Frage(12)

Ihre Antwort auf die Frage