?1110?100????PI?H??1101?010r????1011?001??
监督矩阵可用来校验和纠错,其中P矩阵和Q矩阵为转置关系。
3设计过程
3.1函数介绍
randint(m,n,M):数字信号产生函数,其中m表示产生的信号的行数,n表示产生的信号的列数,M表示使用的进制数。
encode(msg,n,k,method):信道编码函数,msg表示编码以前信号序列,n表示编码后长序列长度,k表示信息位长度,method表示编码方式,采用汉明编码时method=’hanming’。
dmod(x,Fc,Fd,Fs,’fsk’,M):数字带通调制函数,x表示调制前信号序列,Fc表示载波频率,Fd码速率,Fs表示采样频率,tone表示两个载波信号的频率间隔,tone如果不给定则默认为Fd的值,要求Fs>Fc>Fd并且Fs/Fd必须为一个整数,’fsk’表示采用FSK调制,M表示采用的进制数。
awgn(x,snr,’measured’):信道函数,x表示进入信道前信号,snr表示信噪比,’measured’表示现对信号的功率进行测试,然后再添加高斯噪声。
ddemod(x,Fc,Fd,Fs,’fsk’,M):数字带通解调函数,x表示需要解调的信号。 decode(msg,n,k,method):信道译码函数,msg表示需要译码的函数。
3.2 过程测试代码
clear clc
Fc=10; %载频 Fs=32; %系统采样频率 Fd=1; %码速率 N=Fs/Fd; tone=5;
numSymb=4; %进行仿真的信息代码个数 M=2; %进制数
5
SNRpBit=10; %信噪比 SNR=SNRpBit/log2(M);
numPlot=4; %二进制码个数
%产生4个二进制随机码 x=randint(1,numSymb,M) figure(1)
stem([0:numPlot-1],x,'bv'); set(gca,'XTick',0:3); axis([0 numPlot-1 -0.2 1.2]); title('二进制信号'); xlabel('k');
%信道编码 n=7; k=4;
y=encode(x,n,k,'hamming'); figure(2)
stem([0:n-1],y,'bv');
title('经过信道编码后的二进制信号'); xlabel('n'); %调制
m=dmod(y,Fc,Fd,Fs,'fsk',M,tone); numModPlot=n*Fs; t=[0:numModPlot-1]./Fs; figure(3)
plot(t,m(1:length(t)),'b-'); axis([0 n -1.5 1.5]);
%汉明编码 /SK调制 %采样点进行抽样6
title('2FSK调制后的信号'); xlabel('时间'); ylabel('幅值');
%在已调信号中加入高斯白噪声
n1=awgn(m,SNR,'measured'); %在已调信号中加入高斯白噪声 figure(4)
plot(t,n1(1:length(t)),'b-'); %画出经过信道的实际信号 axis([min(t) max(t) -1.5 1.5]); title('加入高斯白噪声后的已调信号'); xlabel('时间'); ylabel('幅值');
%相干解调 figure(5)
z=ddemod(n1,Fc,Fd,Fs,'fsk',M,tone); /SK相干解调 stem([0:n-1],y,'bv'); %调制前信号图 hold on;
stem([0:n-1],z,'ro'); %解调后信号图 hold off;
axis([0 n-1 -0.2 1.3]);
title('调制前和解调后的信号比较');
legend('2FSK调制前二进制信号','相干解调后的二进制信号'); xlabel('n');
%信道译码 figure(6)
d=decode(z,n,k,'hamming') %汉明译码 stem([0:k-1],d,'bv');
7
set(gca,'XTick',0:3); axis([0 k-1 -0.2 1.2]);
title('经过信道译码后的二进制信号'); xlabel('k');
3.3 最终系统实现代码
clear clc
Fc=10; %载频 Fs=32; %系统采样频率 M = 2;
x1=randint(10000,4,M); % 随机序列 x=encode(x1,7,4,'hamming');%信道编码
s1= fskmod(x1,M,5,8,Fs); %调制 未经信道编码 s= fskmod(x,M,5,8,Fs); % 调制
SNR = 1:1:10; % 信噪比范围 for n = 1:length(SNR)
r10 = awgn(s1,SNR(n),'measured'); % 加高斯噪声 未经信道编码 r100 = fskdemod(r10,M,5,8,Fs); % 解调 未经信道编码 r = awgn(s,SNR(n),'measured'); % 加高斯噪声 r1 = fskdemod(r,M,5,8,Fs); % 解调 r11=decode(r1,7,4,'hamming'); %信道译码
[nErrors, BER(n)]=biterr(x1,r100); %计算没经信道编码的误比特率 [nErrors, BER1(n)]=biterr(x1,r11); %计算经信道编码误比特率 BERtheory(n)=1/2*erfc(sqrt(10.^( SNR(n) /10))); end
semilogy(SNR,BERtheory,'b-o',SNR,BER1,'k-*',SNR,BER,'m-p'); %不同颜色画出误比特率比
legend('理论误码率','经信道编码的误码率','不经信道编码的误码率'); %曲线名称 xlabel('SNR (dB)'); ylabel('BER'); %横纵坐标
8
曲线对
4 实验结果
4.1 仿真结果截图
图4-1 二进制信号 图4-2 经过信道编码后的二进制信号
图4-3 2FSK调制信号 图4-4 加入高斯白噪声后的已调信号
图4-5 调制前和解调后的信号比较 图4-6 信道译码后后的信号
图4-7 仿真与理论的信噪比比较
9
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库2FSK调制和汉明码技术仿真 - 图文(2)在线全文阅读。
相关推荐: