用matlab画出不同进制下的MFSK的误码率曲线
时间: 2023-08-24 18:05:13 浏览: 180
以下是使用MATLAB画出不同进制下MFSK的误码率曲线的示例代码:
```matlab
clear all;
close all;
clc;
M = [2,4,8,16]; % 不同进制数
EbN0 = -10:1:20; % 信噪比范围
N = 10000; % 仿真次数
% 计算误码率
for i = 1:length(M)
for j = 1:length(EbN0)
error = 0;
for k = 1:N
tx_data = randi([0,M(i)-1],1,100); % 随机生成100个符号
tx_signal = pskmod(tx_data,M(i)); % M进制PSK调制
noise = sqrt(0.5/(10^(EbN0(j)/10))) * (randn(1,length(tx_signal)) + 1i*randn(1,length(tx_signal))); % AWGN信道噪声
rx_signal = tx_signal + noise; % 加入噪声的接收信号
rx_data = pskdemod(rx_signal,M(i)); % 解调得到接收符号
error = error + sum(rx_data ~= tx_data); % 统计错误符号数
end
ber(i,j) = error / (N*length(tx_data)); % 计算误码率
end
end
% 画图
figure;
semilogy(EbN0,ber(1,:),EbN0,ber(2,:),EbN0,ber(3,:),EbN0,ber(4,:));
grid on;
xlabel('Eb/N0 (dB)');
ylabel('BER');
title('MFSK误码率曲线');
legend('2FSK','4FSK','8FSK','16FSK');
```
执行以上代码可得到不同进制下MFSK的误码率曲线,其中M=2,4,8,16分别对应2FSK,4FSK,8FSK和16FSK。
阅读全文