给定信号x(t)
,我们需要找到关于Y轴信号的对称,x(-t)
如果它对您有帮助,那么这就是我的代码到目前为止的工作方式:
t = [-5:0.01:5];
wt = (t>=0)&(t<=1);
r = @(t) t/5;
x = r(t).*wt;
%reflection - HERE IS WHERE I AM STUCK, basically looking for v(t) = x(-t)
%Shift by 2
y = v(t-2);
%The rest of the program - printing plots basically
我尝试过使用这些:
v = x(t(1:end));
v = x(t(end:-1:1));
v = x(fliplr(t));
但这不正确,因为我按预期得到错误Array indices must be positive integers or logical values.
。有什么想法吗?
答案 0 :(得分:0)
一种解决方案是你考虑这样的事情:
x=signal; % with length 2*N+1 and symmetric
t= -N:N;
现在,考虑你想要索引-2的值。
x(find(t==-2))
对于斜坡信号作为实例:
signal=[r(end:-1:1) 0 r]
假设r是行基矢量和N长度。
答案 1 :(得分:0)
首先应该定义信号函数,然后然后对其进行采样,而不是相反。
例如,我在这里定义了一个信号s(t)
,它是一个窗口斜坡:
s = @(t) t.*((t>=0)&(t<=1))
然后,我可以找到信号的样本及其对称:
t = -5:0.01:5;
plot(t,s(t),t,s(-t))
答案 2 :(得分:0)
对我来说有用的是定义reflect
函数如下:
function val = reflect(t)
val = -t;
end
然后将其与移位功能一起使用以实现我的目标。
答案 3 :(得分:0)
在任意时间间隔内给出任何采样信号:
t = [-5.003:0.01:10];
x = randn(size(t));
您可以在x
周围反映t=0
:
t = -flip(t);
x = flip(x);
请注意,在上面的示例中,未对t=0
进行采样。这种方法不是必需的。