MATLAB: Использование интерполяции для замены отсутствующих значений (NaN)

У меня есть массив ячеек, каждый из которых содержит последовательность значений в качестве вектора строки. Последовательности содержат некоторые пропущенные значения, представленные NaN .

Я хотел бы заменить все NaN, используя какой-то метод интерполяции, как я могу сделать это в MATLAB? Я также открыт для других предложений о том, как бороться с этими пропущенными значениями.

Рассмотрим этот пример данных, чтобы проиллюстрировать проблему:

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

Последовательности:

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

Редактировать:

Думаю, основываясь на ответах возникла путаница: очевидно, я не работаю со случайными данными, приведенный выше код является просто примером того, как структурированы данные.

Фактические данные представляют собой некоторую форму обработанных сигналов. Проблема заключается в том, что во время анализа мое решение не будет выполнено, если последовательности содержат пропущенные значения, следовательно, необходима фильтрация / интерполяция (я уже рассматривал использование среднего значения каждой последовательности для заполнения пробелов, но я надеюсь на что-то более мощное)

7
задан Dave 2 September 2010 в 17:57
поделиться