获得对称信号

时间:2018-05-05 10:00:32

标签: matlab

给定信号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.。有什么想法吗?

4 个答案:

答案 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进行采样。这种方法不是必需的。