利用matlab实现马赫曾德尔调制器的OOK调制
基于MATLAB实现马赫-曾德尔调制器(MZM)进行OOK调制。模拟MZM的调制过程,并生成了OOK调制信号。
代码
1. 参数设置
% 设置基本参数
fs = 10000; % 采样频率
fc = 1000; % 载波频率
t = 0:1/fs:1-1/fs; % 时间向量
2. 生成二进制数据流
% 生成随机二进制数据流
data = randi([0, 1], 1, length(t)); % 随机生成0和1
3. 生成载波信号
% 生成载波信号
carrier = cos(2*pi*fc*t);
4. OOK调制
% OOK调制过程
% 将二进制数据流转换为调制信号
modulated_signal = data .* carrier;
5. 绘制调制信号
% 绘制调制信号
figure;
subplot(2,1,1);
plot(t, data);
title('原始二进制数据');
xlabel('时间 (s)');
ylabel('幅度');
subplot(2,1,2);
plot(t, modulated_signal);
title('OOK调制信号');
xlabel('时间 (s)');
ylabel('幅度');
6. 添加噪声并解调
% 添加高斯白噪声
noise = 0.5 * randn(size(t));
received_signal = modulated_signal + noise;
% 解调过程
threshold = 0.5 * max(received_signal); % 设置阈值
demodulated_signal = received_signal > threshold;
% 计算误码率
errors = sum(demodulated_signal ~= data);
BER = errors / length(data);
fprintf('误码率 (BER): %.4f\n', BER);
% 绘制解调信号
figure;
subplot(2,1,1);
plot(t, received_signal);
title('接收到的信号(含噪声)');
xlabel('时间 (s)');
ylabel('幅度');
subplot(2,1,2);
stairs(t, demodulated_signal);
title('解调后的二进制数据');
xlabel('时间 (s)');
ylabel('幅度');
参考代码 利用matlab实现马赫曾德尔调制器的OOK调制 www.youwenfan.com/contentcnl/80648.html
说明
- 参数设置:定义了采样频率、载波频率和时间向量。
- 生成二进制数据流:随机生成一个二进制数据流,模拟发送的数字信号。
- 生成载波信号:创建一个余弦载波信号。
- OOK调制:将二进制数据流与载波信号相乘,实现OOK调制。
- 绘制调制信号:绘制原始二进制数据和OOK调制信号的波形。
- 添加噪声并解调:在调制信号中添加高斯白噪声,模拟信道传输过程。然后通过阈值检测进行解调,并计算误码率(BER)。

浙公网安备 33010602011771号