两个不同的正弦波产生相同的输出?

时间:2015-01-17 11:17:20

标签: matlab sin matlab-stem

我在matlab中运行了这段代码并期待不同的数字,但我得到它们相同(在标题旁边)。我很确定他们应该产生不同的输出,但他们不是。这里发生了什么?

n = [0 : 63];

x1 = sin(2*pi*n/16);
figure(1);
stem(n, x1);
title('x_1(n) = sin(2*pi*n/16)')
ylabel('x_1(n)')
xlabel('n')

x2 = sin(2*pi*17*n/16);
figure(3);
stem(n, x2);
title('x_2(n) = sin(2*pi*17*n/16)')
ylabel('x_2(n)')
xlabel('n')

2 个答案:

答案 0 :(得分:2)

你选择n这样一种不幸的方式,你偶然只会采样两个波相同的点。试试n = [0 :0.25: 63];

以下是两个采样率都有所提高的情节。红色表示您采样的相同点:

enter image description here enter image description here

ezplot是避免此类问题的不错选择:

ezplot(@(n)(sin(2*pi*n/16)))
hold on
ezplot(@(n)sin(2*pi*17*n/16))

答案 1 :(得分:0)

在您的情况下,您正在处理离散时间信号。因此,对于离散时间,它们完全相同。离散时间表示时间向量具有1时间步长(fs = 1)。如果您更改了时间步长,这意味着它不再是离散时间信号,并且周期计算将以不同方式执行(我的意思是您不需要k值来使周期离散,请参阅下文对于k是什么,所以他们看起来会有不同的信号,因为它们的周期会有所不同。

是的,情节是一样的。因为,他们有相同的时期。

让我们计算他们的时期:

对于第一个信号

x1 = sin(2*pi*n/16);

周期方程:

2*pi/16 = 2*pi*k/(N1)
     N1 = 16*k   | k=1
     N1 = 16

N1是第一个信号的周期。 k是保证make N1离散意味着整数值。 k也是整数值(k=1,2,3, ...)。您必须选择k作为最小值,使N1离散。所以在这里,基本k被选为1

对于第二个信号

x2 = sin(2*pi*n*17/16);

周期方程:

2*pi*17/16 = 2*pi*k/(N2)
        N2 = 16/17*k   | k=17
        N2 = 16

其中基本k被选为17。因为您正在处理离散时间,并且在离散时域中没有16/17之类的值;句点必须是整数值。

具有相同相位的相同周期的信号意味着它们看起来完全相同。