matlab - AWGN、Rayleigh 和 Rician 频道上的 BPSK、QPSK Mod
问题描述
我在交流课上做了作业。我将在 AWGN、Rayleigh 和 Rician 通道上查看 BPSK 和 QPSK 调制的 BER-EbN0 图。我使用 mathwork.com 和其他网站中的资源写了一些东西。它适用于 AWGN,但不适用于其他两个。我认为缺少的部分是均衡。但我找不到解决方案。等待您的帮助,谢谢。
clc; clear; close all;
bit = 100000;
bpskmod = comm.BPSKModulator;
bpskdemod = comm.BPSKDemodulator;
qpskmod = comm.QPSKModulator;
qpskdemod = comm.QPSKDemodulator;
rician_ch = comm.RicianChannel;
rayleigh_ch = comm.RayleighChannel;
equl = comm.MLSEEqualizer;
r = randi([0 1],bit,1);
out = zeros(size(r), 'like', r);
EbNo = 1:1:10;
for n = 1:1:10
bpskmod_r = bpskmod(r);
qpskmod_r = qpskmod(r);
awgn_ch = comm.AWGNChannel('EbNo',n);
bpsk_ch_out = awgn_ch(bpskmod_r);
qpsk_ch_out = awgn_ch(qpskmod_r);
bpsk_rician = rician_ch(bpsk_ch_out);
qpsk_rician = rician_ch(qpsk_ch_out);
bpsk_rayleigh = rayleigh_ch(bpsk_ch_out);
qpsk_rayleigh = rayleigh_ch(qpsk_ch_out);
bpsk_rayleigh_eq = equl(bpsk_rayleigh);
qpsk_rayleigh_eq = equl(qpsk_rayleigh);
bpskdemod_r = bpskdemod(bpsk_ch_out);
qpskdemod_r = qpskdemod(qpsk_ch_out);
bpskdemod_rician = bpskdemod(bpsk_rician);
qpskdemod_rician = qpskdemod(qpsk_rician);
bpskdemod_rayleigh = bpskdemod(bpsk_rayleigh_eq);
qpskdemod_rayleigh = qpskdemod(qpsk_rayleigh_eq);
bpsk_ber(n) = biterr(bpskdemod_r, r)/bit;
qpsk_ber(n) = biterr(qpskdemod_r, r)/bit;
bpsk_rician_ber(n) = biterr(bpskdemod_rician, r)/bit;
qpsk_rician_ber(n) = biterr(qpskdemod_rician, r)/bit;
bpsk_rayleigh_ber(n) = biterr(bpskdemod_rayleigh, r)/bit;
qpsk_rayleigh_ber(n) = biterr(qpskdemod_rayleigh, r)/bit;
end
figure;
title('AWGN Kanalda BPSK ve QPSK modülasyonları grafiği')
semilogy(EbNo, bpsk_ber, 'o-');
hold on;
semilogy(EbNo, qpsk_ber, 'o-');
semilogy(EbNo, bpsk_rician_ber, 'o-');
semilogy(EbNo, qpsk_rician_ber, 'o-');
semilogy(EbNo, bpsk_rayleigh_ber, 'o-');
semilogy(EbNo, qpsk_rayleigh_ber, 'o-');
legend('BPSK', 'QPSK', 'BPSK on Rician', 'QPSK on Rician', 'BPSK on Rayleigh', 'QPSK on Rayleigh');
grid on;
xlabel('EbN0(dB)');
ylabel('BER');
解决方案
推荐阅读
- php - Laravel 8 中的自定义 DatabaseSessionHandler
- python-3.x - 我想在 python 中打印斐波那契数列的 fib(5) 以找到否。fib(0) 的次数?错误“函数”对象没有属性“_args_counter”
- java - 试图在jsp中显示图像(保存在mysql中的图像url和图像存储在一个文件夹中)但它不起作用
- f# - F# - 从选项类型函数中获取元组的 fst 元素
- git - git无法将我的本地分支与远程合并
- kotlin - 类型推断失败。预期类型不匹配
- java - 答案 = in.nextLine().trim().toLowerCase(); 不知道怎么了
- swift - 外观更改时更新小部件
- javascript - Filepond:上传带有缩略图的图像
- c# - 如何在机器人瀑布对话框模型中将值从 StepContext 传递到 Promptvalidatorcontext?