修改代码使得正交解调信号就可以正确还原调制信号
时间: 2023-08-04 22:04:38 浏览: 106
正交信号修正OSC源码
4星 · 用户满意度95%
要实现正交解调信号可以正确还原调制信号,可以将解调器本振频率f0设置为载波频率fc,同时将Q路信号的符号取反,即将
```
Q = s.*sin(2*pi*f0*t);
```
改为
```
Q = -s.*sin(2*pi*f0*t);
```
这样就可以得到正确的解调信号。
完整的修改后的代码如下:
```
% 定义采样频率和采样时长
fs = 5000; % 采样频率
T = 1; % 采样时长
t = 0:1/fs:T-1/fs; % 时间序列
% 定义载波频率和调制信号
fc = 1000; % 载波频率
fm = 100; % 调制信号频率
bw = 200; % 带宽
Ac = 1; % 载波幅度
Am = 0.5; % 调制信号幅度
m = Am*cos(2*pi*fm*t); % 调制信号
% VSB模拟调制
b = fir1(50,[fc-bw/2,fc+bw/2]/(fs/2)); % 滤波器设计
s = Ac*cos(2*pi*fc*t).*m - Ac*sin(2*pi*fc*t).*filter(b,1,m);
% 数字化正交解调
f0 = fc; % 解调器本振频率
I = s.*cos(2*pi*f0*t); % I路信号
Q = -s.*sin(2*pi*f0*t); % Q路信号
fir = fir1(50, 2*fm/fs); % FIR低通滤波器
I_filtered = filter(fir, 1, I); % I路信号低通滤波
Q_filtered = filter(fir, 1, Q); % Q路信号低通滤波
envelope = sqrt(I_filtered.^2+Q_filtered.^2); % 相干解调
% 绘图
subplot(3,1,1); plot(t, m); title('调制信号'); xlabel('时间'); ylabel('幅度');
subplot(3,1,2); plot(t, s); title('VSB模拟调制信号'); xlabel('时间'); ylabel('幅度');
subplot(3,1,3); plot(t, envelope); title('数字化正交解调结果'); xlabel('时间'); ylabel('幅度');
```
这样修改后,绘制出来的数字化正交解调结果与原调制信号相同。
阅读全文