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

SMH*_*SMH 3 matlab signals signal-processing

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

在此输入图像描述

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);        %
Run Code Online (Sandbox Code Playgroud)

ray*_*ica 10

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

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


小调:以上实际上是双边带抑制载波(DSB-SC)调制,但如果你想在你的问题中实现你想要的,我们实际上需要这样做.而且,通常使用信号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;
Run Code Online (Sandbox Code Playgroud)

上面的代码将载波和调制信号一起绘制.

这就是我得到的:

在此输入图像描述

如您所见,随着时间的增加,振幅会变高.你也可以看到,载波信号被限定在消息信号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;
Run Code Online (Sandbox Code Playgroud)

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

这就是我得到的:

在此输入图像描述

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

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

祝好运!

  • +1用于非常详尽的解释 (2认同)