随着时间的推移,随着幅度和频率的增加绘制正弦波

时间:2014-11-14 01:32:33

标签: matlab signals signal-processing

我正在尝试绘制一个正弦波,其中振幅随时间增加,并且频率随着时间的推移而增加。我画了一个正常的正弦波,如下图所示,但我无法改变幅度和频率。任何想法?

enter image description here

t  = [ 0 : 1 : 40 ];           % Time Samples
f  = 500;                       % Input Signal Frequency
fs = 8000;                    % Sampling Frequency
x = sin(2*pi*f/fs*t);        % Generate Sine Wave  
figure(1);
stem(t,x,'r');                  % View the samples
figure(2);
stem(t*1/fs*1000,x,'r');  % View the samples
hold on;
plot(t*1/fs*1000,x);        %

1 个答案:

答案 0 :(得分:9)

我相信你所说的是amplitude modulation (AM)frequency modulation (FM)。基本上,AM指的是改变正弦信号的幅度,并且改变它使用与时间相关的函数。 FM类似,除了频率变化而不是幅度。

给定时变信号A(t),AM通常表示为:


次要注意:以上实际上是double sideband suppressed carrier (DSB-SC) modulation但是如果你想在你的问题中实现你想要的,我们实际上需要这样做。此外,信号通常使用cos而不是sin来确保发送时的零相位偏移。但是,因为您的原始代码使用sin,所以我也会使用它。

我在这里放置此免责声明,以防任何通讯理论家想要尝试并纠正我:)


同样,FM通常表示为:

A(t)是所谓的消息调制信号,因为它会改变正弦波的幅度或频率。正弦曲线本身就是所谓的载波信号。使用AM和FM的原因在于通信理论。在模拟通信系统中,为了将信号从一个点发送到另一个点,需要将消息频移或<强>调制到频谱中的更高范围,以便适应频率响应。信号传入的信道或媒介。

因此,您只需将A(t)指定为您想要的任何一个信号,只要t的值与您的正弦曲线一样使用即可。例如,假设您希望幅度或频率线性增加。在这种情况下,A(t) = t。请记住,您需要指定正弦波f_c的频率,数据的采样周期或采样频率以及信号定义的时间范围。我们将数据的采样频率称为f。另外请记住,如果您希望曲线可以正确显示,则需要足够高。如果你把它做得太低,那么你将会跳过信号的基本峰值和低谷,图表看起来很差。

因此,对于AM,您的代码可能如下所示:

f = 24; %// Hz
f_c = 8; %// Hz
T = 1 / f; %// Sampling period from f

t = 0 : T : 5; %// Determine time values from 0 to 5 in steps of the sampling period

A = t; %// Define message

%// Define carrier signal
carrier = sin(2*pi*f_c*t);

%// Define AM signal
out = A.*carrier;

%// Plot carrier signal and modulated signal
figure;
plot(t, carrier, 'r', t, out, 'b');
grid;

以上代码将载波和调制信号一起绘制。

这就是我得到的:

enter image description here

如您所见,随着时间的增加,振幅会变高。您还可以通过消息信号A(t) = t看到载波信号有界。我已将原始载波信号放在图中作为辅助。你可以肯定地看到,由于信息信号,载波的幅度越来越大。

同样,如果你想做FM,大多数代码都是一样的。唯一不同的是消息信号将在载波信号本身内部。因此:

f = 100; %// Hz
f_c = 1; %// Hz
T = 1 / f; %// Sampling period from f

t = 0 : T : 5; %// Determine time values from 0 to 5 in steps of the sampling period

A = t; %// Define message

%// Define FM signal
out = sin(2*pi*(f_c + A).*t);

%// Plot modulated signal
figure;
plot(t, out, 'b');
grid;

请记住,我更改了f_cf,以便您正确查看更改。我也没有绘制载波信号,所以你不会分心,你可以更清楚地看到结果。

这就是我得到的:

enter image description here

您可以看到频率开始相当低,然后由于消息信号A(t) = t而开始逐渐增加。随着时间的增加,频率也随之增加。

您可以使用不同的频率来获得不同的结果,但这应该足以让您入门。

祝你好运!