Существует разница между оценкой функции и , индексирующей массив , хотя они оба используют один и тот же синтаксис в MATLAB.
, поскольку x
являетсямассив, а не функция, x(t-1)
пытается индексировать в массив x
в местах t-1
.Однако t
содержит нецелочисленные значения и неположительные значения.Индексы в MATLAB должны быть между 1 и количеством элементов в массиве.
Чтобы сдвинуть массив на 1 вправо, вы можете использовать индексирование следующим образом:
x([1,1:end-1])
Здесь,мы повторяем элемент № 1 и удаляем последний элемент.Есть и другие способы сделать то же самое.
Но, поскольку одна единица времени не соответствует одному элементу массива, поскольку t
увеличивается на 0,1 для каждого элемента массива, это соответствует сдвигу на 0,1 единицы времени., а не 1 единица времени.
Чтобы сдвинуться на одну единицу времени, вам нужно изменить указанную выше индексацию, чтобы сместить массив на 10 элементов.В общем случае возможно, что 1 единица времени не соответствует целому числу элементов массива, например, если приращение было 0,3 вместо 0,1.В этом случае вам нужно интерполировать:
interp1(t,x,t-1,'linear','extrap')
Здесь мы читаем за пределами входного массива, и поэтому должны позаботиться об экстраполяции.Отсюда и последний аргумент вызова функции.Вы также можете заполнить экстраполированные значения нулями, например.