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('幅度');

代码解析:

  1. 生成AM调制信号:代码首先使用sincos函数生成了一个频率为f的正弦信号,然后使用该信号对载波信号进行调制,得到AM调制信号x
  2. 生成解调信号的正交载波信号:生成与调制信号频率相同的载波信号cs,它们相位相差90度,构成正交载波。
  3. 正交解调:将调制信号x分别乘以cs,得到正交分量x_Ix_Q
  4. 低通滤波:使用butter函数生成一个4阶巴特沃斯低通滤波器,并使用filter函数对x_Ix_Q进行滤波,得到解调信号的I和Q分量y_Iy_Q
  5. 输出解调信号:通过计算y_Iy_Q的平方和的平方根,得到解调信号的幅度y
  6. 绘图:最后代码将调制信号和解调信号分别绘制在两个子图中,以便观察信号的变化。

总结:

通过以上步骤,我们成功地使用MATLAB代码实现了AM信号的正交解调。代码清晰易懂,并提供了可视化结果,方便读者理解和学习。


原文地址: https://www.cveoy.top/t/topic/m1FI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录