转移信号的时间

时间:2018-05-06 07:48:50

标签: matlab

考虑信号x = t.*(2*t + 4)

如果我想时间移位信号-let说2个时间值到右边 - 是否可以做类似的事情

x = x(t-2)

为了改变所有价值观? 我偶然发现了circshift,但我找不到任何用途

编辑:我正在寻找能够适用于每个信号的解决方案,例如,如果我反映x(或对其执行任何操作)并将其存储在Y上,我应该及时换班吗?

1 个答案:

答案 0 :(得分:1)

您可以将信号定义为一个函数,以便您可以根据需要进行移位。

例如,

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

如果你运行上面的代码,你会发现反射和移位不是可交换的,因为结果向量是不同的。