以下是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调制信号x,然后生成了解调信号的正交载波信号c和s,通过将调制信号分别乘以c和s,得到了正交分量x_I和x_Q。接下来使用一个低通滤波器对x_I和x_Q进行滤波,得到了解调信号的I和Q分量y_I和y_Q。最后通过计算y_I和y_Q的平方和的平方根,得到了解调信号的幅度y。绘图部分将调制信号和解调信号分别绘制在两个子图中。


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

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