У меня есть вектор, содержащий временной ряд с различными значениями и некоторые пропущенные значения между ними, которые установлены на ноль:
X=[0,0,2,0,5,0,0,0,4,0];
Я хочу создать новый вектор, в котором будут заполнены отсутствующие значения (нули)по предыдущему значению, если оно существует, так что я получаю новый вектор, похожий на:
Z=[0,0,2,2,5,5,5,5,4,4];
Я просматривал справку и форумы Matlab, как это, чтобы найти аккуратную и подходящую функцию, которая бы решала этуя с решением одной линии или аналогичным, но я не смог сделать это.Я могу решить эту проблему, выполнив несколько различных шагов в соответствии с нижеприведенным описанием, но я предполагаю, что должно быть доступно лучшее и более простое решение?
Текущее решение:
X=[0,0,2,0,5,0,0,0,4,0];
ix=logical(X);
Y = X(ix);
ixc=cumsum(ix);
Z=[zeros(1,sum(~logical(ixc))) Y(ixc(logical(ixc)))];
Это помогает., но это кажется слишком сложным решением простой проблемы, так может кто-нибудь помочь мне с лучшей?Спасибо.