matlab 2fsk包络检波
时间: 2023-07-28 07:07:58 浏览: 263
在 MATLAB 中进行 2FSK 包络检波的步骤如下:
1. 生成 2FSK 调制信号。
2. 使用 AWGN 函数添加高斯噪声,模拟信道。
3. 设计一个低通滤波器,将调制信号通过滤波器。
4. 对滤波后的信号进行包络检波,使用 hilbert 函数将信号转换为解析信号,然后使用 abs 函数获取信号的幅值。
5. 对检波后的信号进行解调,使用一个门限电平将信号转换为二进制数据。
以下是一个示例代码:
```
% 生成 2FSK 调制信号
Fs = 1000; % 采样率
t = 0:1/Fs:1; % 时间向量
f1 = 50; % 第一个频率
f2 = 100; % 第二个频率
s = cos(2*pi*f1*t) + cos(2*pi*f2*t);
% 添加高斯噪声
SNR = 10; % 信噪比
s_noisy = awgn(s, SNR);
% 设计低通滤波器
Fc = 150; % 截止频率
[b, a] = butter(10, Fc/(Fs/2));
% 滤波
s_filtered = filter(b, a, s_noisy);
% 包络检波
s_analytic = hilbert(s_filtered);
s_envelope = abs(s_analytic);
% 解调
threshold = 0.5;
bits = s_envelope > threshold;
% 绘制结果
figure;
subplot(2,1,1);
plot(t, s, 'b', t, s_noisy, 'g');
title('2FSK 调制信号');
legend('原始信号', '加噪声信号');
subplot(2,1,2);
plot(t, s_filtered, 'r', t, s_envelope, 'm', t, bits, 'k');
title('2FSK 包络检波和解调结果');
legend('滤波信号', '包络检波信号', '解调结果');
```
这段代码会生成一个包含原始信号、加噪声信号、滤波信号、包络检波信号和解调结果的图形。你可以根据自己的需要修改代码。
阅读全文