【问题标题】:Drawing sine wave with increasing Amplitude and frequency over time绘制幅度和频率随时间增加的正弦波
【发布时间】:2015-01-11 08:18:02
【问题描述】:

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

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);        %

【问题讨论】:

  • 你说的是幅度和频率调制吗?幅度或频率如何随时间增加?线性?
  • 我需要画一个正弦波,开始时幅度很小,频率也很小,然后在一小段时间后随着时间的推移而增加
  • 您说的是调制信号作为线性斜坡的幅度或频率调制。我会写一个答案。
  • 是的,我说的是幅度或频率调制
  • 你下次应该把这个放在你的问题中。如果您确切地知道自己在说什么,人们会很快回答您的问题。

标签: matlab signals signal-processing


【解决方案1】:

我相信你说的是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;

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

这是我得到的:

如您所见,幅度随着时间的增加而变高。您还可以看到,载波信号被消息信号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 以便您正确查看更改。我也没有绘制载波信号,所以你不会分心,你可以更清楚地看到结果。

这是我得到的:

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

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

祝你好运!

【讨论】:

  • 完美!我有一个小问题.. 如何更改相同信号的频率,因为您更改了图 1 中的幅度?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
相关资源
最近更新 更多