Вы можете определить сигнал как функцию, чтобы затем можно было сдвигать его по своему желанию.
Например,
x = @(t) t.*(2*t + 4); % A function x(t)
y = @(t) x(-t); % A reflected version of the function
z = @(t,a) x(t-a); % A delayed version of the function
t = -5:0.01:5; % Sampling instants
X = x(t); % A vector of samples of the original signal
Y = x(t-2); % A vector of samples of the delayed signal
Обратите внимание, что если вы хотите определить операторы, которые могут отражать и сдвигать любую функцию, вы можете, например, написать
Rop = @(s,t) s(-t);
Sop = @(s,a,t) s(t-a);
И вы можете использовать их на сигнале x
как
Rop(x,[-2 -1 0 1 2]) % Calculates x([2 1 0 -1 -2])
Sop(x,5,[1 2 3 4 5]) % Calculates x([-4 -3 -2 -1 0])
Если вы хотите совместить сдвиг и отражение, вы можете сделать это так:
Rop(@(t) Sop(x,2,t),[1 2 3 4 5]) % First shifts x by 2, then reflects
Sop(@(t) Rop(x,t),2,[1 2 3 4 5]) % First reflects x, and then shifts by 2
Если вы запустите приведенный выше код, вы увидите, что отражение и сдвиг не являются коммутативными, поскольку результирующие векторы отличаются.