MATLAB实现AM信号的正交解调 - 代码详解与可视化
MATLAB实现AM信号的正交解调 - 代码详解与可视化
本文将使用MATLAB代码演示如何实现AM信号的正交解调。
代码如下:
%% 正交解调AM信号
clc; clear all; close all;
% 采样频率和采样时间
fs = 500; % Hz
Ts = 1/fs;
% 信号频率
f = 10; % Hz
% 信号幅度和调制系数
A = 1;
m = 0.5;
% 生成调制信号
t = 0:Ts:1-Ts;
x = A*(1+m*sin(2*pi*f*t)).*cos(2*pi*f*t);
% 生成解调信号
fc = f; % 解调信号的载波频率与调制信号频率相同
t_c = 0:Ts:1-Ts;
c = cos(2*pi*fc*t_c);
s = sin(2*pi*fc*t_c);
% 正交解调
x_I = x .* c;
x_Q = x .* s;
% 低通滤波
[b, a] = butter(4, 2*f/fs);
y_I = filter(b, a, x_I);
y_Q = filter(b, a, x_Q);
% 输出解调信号
y = sqrt(y_I.^2 + y_Q.^2);
% 绘图
subplot(211);
plot(t, x);
title('调制信号');
xlabel('时间 (s)');
ylabel('幅度');
subplot(212);
plot(t, y);
title('解调信号');
xlabel('时间 (s)');
ylabel('幅度');
代码解析:
- 生成AM调制信号:代码首先使用
sin和cos函数生成了一个频率为f的正弦信号,然后使用该信号对载波信号进行调制,得到AM调制信号x。 - 生成解调信号的正交载波信号:生成与调制信号频率相同的载波信号
c和s,它们相位相差90度,构成正交载波。 - 正交解调:将调制信号
x分别乘以c和s,得到正交分量x_I和x_Q。 - 低通滤波:使用
butter函数生成一个4阶巴特沃斯低通滤波器,并使用filter函数对x_I和x_Q进行滤波,得到解调信号的I和Q分量y_I和y_Q。 - 输出解调信号:通过计算
y_I和y_Q的平方和的平方根,得到解调信号的幅度y。 - 绘图:最后代码将调制信号和解调信号分别绘制在两个子图中,以便观察信号的变化。
总结:
通过以上步骤,我们成功地使用MATLAB代码实现了AM信号的正交解调。代码清晰易懂,并提供了可视化结果,方便读者理解和学习。
原文地址: https://www.cveoy.top/t/topic/m1FI 著作权归作者所有。请勿转载和采集!