考虑信号x = t.*(2*t + 4)
如果我想时间移位信号-let说2个时间值到右边 - 是否可以做类似的事情
x = x(t-2)
为了改变所有价值观?
我偶然发现了circshift
,但我找不到任何用途
编辑:我正在寻找能够适用于每个信号的解决方案,例如,如果我反映x(或对其执行任何操作)并将其存储在Y上,我应该及时换班吗?
答案 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
如果你运行上面的代码,你会发现反射和移位不是可交换的,因为结果向量是不同的。