У меня есть массив ячеек, каждый из которых содержит последовательность значений в виде вектора строки. Последовательности содержат некоторые недостающие значения, представленные NaN
.MATLAB: Использование интерполяции для замены отсутствующих значений (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
Edit:
На основе ответов, я думаю, что там было путаница: очевидно, что я не работаю со случайными данными, приведенный выше код просто является примером того, как t он структурирован.
Фактические данные - это некоторая форма обработанных сигналов. Проблема заключается в том, что во время анализа мое решение потерпело бы неудачу, если последовательности содержат отсутствующие значения, следовательно, необходимость фильтрации/интерполяции (я уже считал, что использую среднее значение каждой последовательности для заполнения пробелов, но я надеюсь на что-то более мощное)
В вашем примере, я думаю, вам будет трудно найти способ интерполировать отсутствующие значения. Интерполяция требует, чтобы между точками данных существовали какие-то отношения. Часто это может случиться так, что они исходят из временного ряда (поэтому можно догадаться, что недостающая часть может быть выведена из соседних точек). В ваших примерах вы пытаетесь угадать «монетку», основанную только на других монетах. Если вы можете дать нам больше информации о вашем конкретном примере, мы можем помочь вам больше. – JudoWill
@JudoWill: Я думаю, что он просто использовал случайные данные в качестве примера для людей, с которыми можно играть. – gnovice