Ho una serie di celle ciascuna contenente una sequenza di valori come vettore di riga. Le sequenze contengono alcuni valori mancanti rappresentati da NaN
.MATLAB: utilizzo dell'interpolazione per sostituire i valori mancanti (NaN)
Vorrei sostituire tutti i NaN utilizzando una sorta di metodo di interpolazione, come posso farlo in MATLAB? Sono aperto anche ad altri suggerimenti su come gestire questi valori mancanti.
Considerare questi dati di esempio per illustrare il problema:
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
le sequenze risultanti:
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
Edit:
Sulla base delle risposte, penso che ci sia stato un confusione: ovviamente non sto lavorando con dati casuali, il codice mostrato sopra è semplicemente un esempio di come t i dati sono strutturati.
I dati effettivi sono una forma di segnali elaborati. Il problema è che durante l'analisi, la mia soluzione fallirebbe se le sequenze contengono valori mancanti, quindi la necessità di filtraggio/interpolazione (ho già considerato l'utilizzo della media di ogni sequenza per riempire gli spazi vuoti, ma spero in qualcosa di più potente)
Nel tuo esempio, penso che ti sarebbe difficile trovare un modo per interpolare i valori mancanti. L'interpolazione richiede che ci sia una sorta di relazione tra i punti di dati. Spesso è possibile che provengano da una serie temporale (quindi una buona ipotesi è che la parte mancante possa essere dedotta dai punti vicini). Nei tuoi dati di esempio stai cercando di indovinare un "coin-flip" basato solo su altri coin-flip. Se puoi darci maggiori informazioni sul tuo esempio specifico, possiamo aiutarti di più. – JudoWill
@JudoWill: Penso che stia usando solo dati casuali come esempio per le persone con cui giocare. – gnovice