У меня есть массив ячеек, каждый из которых содержит последовательность значений в виде вектора-строки. Последовательности содержат некоторые пропущенные значения, представленные 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
Редактировать:
Основываясь на ответах, я думаю, что произошла путаница: очевидно, я не работаю со случайными данными, код, показанный выше, является просто примером того, как данные структурированы.
Фактические данные представляют собой некоторую форму обработанных сигналов. Проблема в том, что во время анализа мое решение потерпит неудачу, если последовательности содержат пропущенные значения, следовательно, потребуется фильтрация/интерполяция (я уже рассматривал возможность использования среднего значения каждой последовательности для заполнения пробелов, но я надеюсь на что-то более мощное).