У меня есть вектор, содержащий временной ряд с разными значениями и некоторыми отсутствующими значениями между ними, которые установлены равными нулю:
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)))];
Это помогает, но кажется слишком сложным решением простой проблемы, так что может ли кто-нибудь помочь мне с лучшим решением? Спасибо.