Matlab实现模拟调制与解调

本文介绍了在Matlab中实现模拟调制解调的方法,包括幅度调制原理、调幅(AM)、双边带调制(DSB)和单边带调制(SSB)。提供了详细的Matlab代码示例,并讨论了解调过程,如相干解调和AM、DSB、SSB的解调方法。所有代码已上传至Github。
摘要由CSDN通过智能技术生成

 

本文会介绍简单的模拟调制解调方法,涉及AM、DSB、SSB,但没有VSB,VSB相关的资料会在后文附上。

幅度调制

幅度调制原理

幅度调制是由调制信号去控制高频载波的幅度,使之随调制信号作线性变化的过程

简单的说,幅度调制的作用就是使得载波的幅度承载信息。

设正弦型载波为:

式中:A为载波幅度,ω为载波角频率,φ为载波初始相位

幅度已调信号一般可表示为:

式中:m(t)为基带调制信号

设m(t)的频谱为M(ω),则s(t)的频谱为:

从频域表达式可以看出,幅度调制信号为调制信号在频域上的线性搬移。不过实际上,任何一种调制都是非线性的。

调幅(AM)

调幅的时域表达式为:

式中:A0为外加直流分量,Ac为载波信号的最大幅值,Ka为调制度

matlab实现过程如下:

生成调制信号

A0 = 0.1;
Ka = 0.5;
Fs = 300;

% Modulating signal
Am = 1;
fa = 10;
Ts = 1/Fs;
t = 0:Ts:1-Ts;
ym = Am*sin(2*pi*fa*t);
figure(1);
subplot(3,2,1);
plot(t,ym);
title('Modulating signal');

[YfreqDomain,frequencyRange] = centeredFFT(ym,Fs);
subplot(3,2,2)
stem(frequencyRange,abs(YfreqDomain));

生成载波信号

%Carrier signal
Ac = 1;
fc = fa*10;
Tc = 1/fc;
yc = Ac*sin(2*pi*fc*t);
subplot(3,2,3);
plot(t,yc);
title('Carrier signal');

[YfreqDomain,frequencyRange] = centeredFFT(yc,Fs);
subplot(3,2,4)
stem(frequencyRange,abs(YfreqDomain))
  • 50
    点赞
  • 367
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
模拟调制解调一种基本的通信技术,可以实现信息的传输。在MATLAB中,可以使用调制函数和解调函数来实现模拟调制解调。 1. 调制 常见的模拟调制方式有幅度调制(AM)、频率调制(FM)和相位调制(PM)。下面分别介绍这三种调制方式的实现方法。 幅度调制(AM): ```matlab % 读入原始信号 [x, fs] = audioread('signal.wav'); % 设置调制参数 fc = 100000; % 载波频率 Ac = 1; % 载波幅度 kf = 100; % 调制指数 % AM调制 y = (1 + kf * x) .* Ac .* cos(2*pi*fc*(0:length(x)-1)/fs); % 绘制调制信号的频谱图 N = length(y); % FFT长度 Y = fft(y, N); % FFT变换 f = (0:N-1)*fs/N; % 频率坐标 figure; subplot(2,1,1); plot(f, abs(Y)); xlabel('Frequency (Hz)'); ylabel('Magnitude'); title('Spectrum of Modulated Signal'); % 播放调制信号 sound(y, fs); ``` 频率调制(FM): ```matlab % 读入原始信号 [x, fs] = audioread('signal.wav'); % 设置调制参数 fc = 100000; % 载波频率 Ac = 1; % 载波幅度 kf = 10000; % 调制指数 % FM调制 y = Ac * cos(2*pi*fc*(0:length(x)-1)/fs + kf * cumsum(x)/fs); % 绘制调制信号的频谱图 N = length(y); % FFT长度 Y = fft(y, N); % FFT变换 f = (0:N-1)*fs/N; % 频率坐标 figure; subplot(2,1,1); plot(f, abs(Y)); xlabel('Frequency (Hz)'); ylabel('Magnitude'); title('Spectrum of Modulated Signal'); % 播放调制信号 sound(y, fs); ``` 相位调制(PM): ```matlab % 读入原始信号 [x, fs] = audioread('signal.wav'); % 设置调制参数 fc = 100000; % 载波频率 Ac = 1; % 载波幅度 kf = 2*pi*1000; % 调制指数 % PM调制 y = Ac .* cos(2*pi*fc*(0:length(x)-1)/fs + kf * x); % 绘制调制信号的频谱图 N = length(y); % FFT长度 Y = fft(y, N); % FFT变换 f = (0:N-1)*fs/N; % 频率坐标 figure; subplot(2,1,1); plot(f, abs(Y)); xlabel('Frequency (Hz)'); ylabel('Magnitude'); title('Spectrum of Modulated Signal'); % 播放调制信号 sound(y, fs); ``` 2. 解调 解调是将调制信号还原成原始信号的过程。在解调过程中,需要知道所使用的调制方式,以便正确地进行解调。下面以幅度调制(AM)为例,介绍解调实现方法。 幅度调制(AM)解调: ```matlab % 读入调制信号 [y, fs] = audioread('modulated_signal.wav'); % 设置解调参数 fc = 100000; % 载波频率 Ac = 1; % 载波幅度 kf = 100; % 调制指数 % AM解调 x = (y ./ (Ac .* cos(2*pi*fc*(0:length(y)-1)/fs))) ./ kf; % 绘制解调信号的波形图 t = (0:length(x)-1)/fs; figure; subplot(2,1,1); plot(t, x); xlabel('Time(s)'); ylabel('Amplitude'); title('Demodulated Signal'); % 播放解调信号 sound(x, fs); ``` 以上代码中,读入的原始信号为signal.wav,使用audioread函数读入原始信号。调制过程中,设置了载波频率、载波幅度和调制指数,根据不同的调制方式设置不同的参数即可。解调过程中,使用了解调公式进行解调,得到原始信号。最后绘制了解调信号的波形图,并播放了解调信号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值