%2FSK调制在瑞利信道下,(7,4)汉明码
clear all
SNR=-10:10;
N=30000; %消息比特个数
berhm=zeros(1,length(SNR));
n=7;
k=4;
SymbolRate=2000; %符号速率
nsamp=8; %每个符号的取样点数
fs=5000;
Fs=9600;
Ts=1/Fs;
Fd=960;
delay=[0,0.002,0.005];
power=[0,-1,-3];
h=rayleighchan(Ts,Fd,delay,power);
msg=randi([0,1],1,N); %输入信号
msg1hm=reshape(msg,N/k,k);
msg2hm=encode(msg1hm,n,k,'hamming'); %汉明码编码
[mmm,nnn]=size(msg2hm);
msghm=reshape(msg2hm,1,mmm*nnn); %变成行矩阵
x1hm=fskmod(msghm,2,SymbolRate,nsamp,fs);
for ii=1:length(SNR)
x2hm=filter(h,x1hm);
yhm=x2hm+awgn(x1hm,SNR(ii));
y1hm=fskdemod(yhm,2,SymbolRate,nsamp,fs);
y2hm=reshape(y1hm,mmm*nnn/n,n);
youthm=decode(y2hm,n,k,'hamming'); %译码
youtendhm=reshape(youthm,1,N);
[errhm,berhm(ii)]= biterr(youtendhm, msg); %误比特率
disp(berhm);
end
figure(1)
semilogy(SNR,berhm,'-ro') ;
% legend('高斯');
title('汉明码 2FSK 瑞利信道')
xlabel('信噪比(dB)')
ylabel('误比特率')