%row 和 col为交积器的行和列,通过改变col就可以改变交积器的长度 retbits=zeros(1,length(bitstream)); bitarr=vec2mat(bitstream,col); for i=1:length(bitstream)/(row*col) temp=bitarr((i-1)*row+1:i*row,:);
retbits(1,(i-1)*row*col+1:i*row*col)=reshape(temp,1,[]); end
信道衰落子程序:
function code=addfade(modcode,Tf,isperiod,isfade) %功能:向传输序列modcode叠加衰落性信道的衰落参数k(t) %code为加入衰减参数之后返回的序列。 % modcode为调制之后的序列
% Tf 为衰落时间,以ms为单位,小于10ms, % Tf=1,表示衰落1ms
% isperiod 周期衰落和一次性衰落的标志, % isperiod=1表示周期性衰落,0表示一次性衰落
% isfade表示是否存在衰落,1存在,0不存在衰落直接返回modcode if(isfade==1)
if(isperiod==1) %周期性衰落 for k=1:length(modcode)/(100*Tf) a=(k-1)*100*Tf+31; b=(k-1)*100*Tf+30+10*Tf;
modcode(1,a:b)=0.1*modcode(1,a:b); end
else %一次衰落 a=31; b=30+10*Tf;
modcode(1,a:b)=0.1*modcode(1,a:b); end
code=modcode; else
code=modcode; end
1、 file1:信道编码对通信系统性能的影响,有无信道编码的影响
执行时间:Elapsed time is 355.023518 seconds.
tic clc
%功能:有无信道编码性能比较 M=2; %进制
b=log2(M) ; %每符号比特数 n=128*10000 ; %符号数
G=[1 1 1 1 0 0 0;1 0 1 0 1 0 0;0 1 1 0 0 1 0;1 1 0 0 0 0 1] ; %生成矩阵 H=[1 0 0 1 1 0 1;0 1 0 1 0 1 1;0 0 1 1 1 1 0] ; %监督矩阵 Etab= [0 0 0 0 0 0 0;0 0 0 0 0 0 1; %错误图样 0 0 0 0 0 1 0;0 0 0 0 1 0 0; 0 0 0 1 0 0 0;0 0 1 0 0 0 0; 0 1 0 0 0 0 0;1 0 0 0 0 0 0];
Smatrix=Etab*H'; %对应的伴随式 sym=randint(n,1,M);
sym=de2bi(sym,'left-msb'); %模拟信源编码 bitcoded=channelcoding(sym,G,4); %信道编码,(7,4)码 modbit=pskmod(bitcoded,M); %在传输序列modbit加入AWGN噪声 snr=0:0.2:15; %噪声为0到15d L=length(snr) ser=zeros(1,L); ser2=zeros(1,L); for k=1:L
y=awgn(modbit,10*log10(b)+snr(k),'measured'); zsym=pskdemod(y,M); %复数解调 zbit=de2bi(zsym,'left-msb'); recode=reshape(zbit',1,[]); Rstream=recode;
err=(Rstream~=bitcoded); errnum=sum(err);
ser(k)=log10(errnum/length(bitcoded)); %纠错
bitdecoded=channeldecoding(Rstream,Etab,Smatrix,H,7,4); err=(bitdecoded~=bitcoded);
errbits=sum(err);
ser2(k)=log10(errbits/(length(bitcoded))); end
plot(snr,ser,'b-*') hold on
plot(snr,ser2,'r-o') grid on
legend('没有信道编码','信道编码'); xlabel('Eb/No(dB)'); ylabel('SER');
title('2PSK有无信道编码性能比较'); toc %
Elapsed time is 278.288819 seconds.程序运行时间
结论:由上图在较高信噪比的时候编码增益很明显大大提高了误码性能,但是在低信噪被的时候编码增益较小甚至可能是负值,则是因为编码后信息比特能量扩散到多个编码比特上,每个编码比特能量有所降低,如果信噪比低的话,编码冗余带来的性能增益可能弥补不了编码比特的能量的降低,因此信道中信噪比的波动会显著降低编码性能
2、 file2:在周期性深衰落的信道条件下,交织对通信系统性能的影响
tic clc
%功能:有无信道编码性能比较 M=2; %进制
b=log2(M) ; %每符号比特数 n=128*10000 ; %符号数
interrow=8;intercol=10;%交积矩阵的行和列
G=[1 1 1 1 0 0 0;1 0 1 0 1 0 0;0 1 1 0 0 1 0;1 1 0 0 0 0 1] ; %生成矩阵 H=[1 0 0 1 1 0 1;0 1 0 1 0 1 1;0 0 1 1 1 1 0] ; %监督矩阵 Etab= [0 0 0 0 0 0 0;0 0 0 0 0 0 1; %错误图样 0 0 0 0 0 1 0;0 0 0 0 1 0 0; 0 0 0 1 0 0 0;0 0 1 0 0 0 0; 0 1 0 0 0 0 0;1 0 0 0 0 0 0];
Smatrix=Etab*H'; %对应的伴随式 sym=randint(n,1,M);
sym=de2bi(sym,'left-msb'); %模拟信源编码 bitcoded=channelcoding(sym,G,4); %信道编码,(7,4)码 interv=interweaving(bitcoded,interrow,intercol); %交积向量 modbit=pskmod(bitcoded,M); modbit2=pskmod(interv,M);
%向传输序列modcode叠加衰落性信道的衰落参数k(t) modbitfade=addfade(modbit,1,1,1);
modbitfade2=addfade(modbit2,1,1,1);%1ms周期性衰落 modbitfade3=addfade(modbit2,2,1,1);%衰落时长2ms %在传输序列modbit加入AWGN噪声 snr=0:0.2:25; %噪声为0到25d L=length(snr) ser=zeros(1,L); ser2=zeros(1,L); for k=1:L
y=awgn(modbitfade,10*log10(b)+snr(k),'measured'); y2=awgn(modbitfade2,10*log10(b)+snr(k),'measured'); y3=awgn(modbitfade3,10*log10(b)+snr(k),'measured'); zsym=pskdemod(y,M); %复数解调 zsym2=pskdemod(y2,M); zsym3=pskdemod(y3,M);
zbit=de2bi(zsym,'left-msb'); zbit2=de2bi(zsym2,'left-msb'); zbit3=de2bi(zsym3,'left-msb'); recode=reshape(zbit',1,[]); recode2=reshape(zbit2',1,[]); recode3=reshape(zbit3',1,[]);
deinterv=deinterweaving(recode2,interrow,intercol);%解交积向量 deinterv3=deinterweaving(recode3,interrow,intercol); Rstream=recode; Rstream2=deinterv; Rstream3=deinterv3; %纠错
bitdecoded=channeldecoding(Rstream,Etab,Smatrix,H,7,4); bitdecoded2=channeldecoding(Rstream2,Etab,Smatrix,H,7,4); bitdecoded3=channeldecoding(Rstream3,Etab,Smatrix,H,7,4); err=(bitdecoded~=bitcoded); errbits=sum(err);
ser(k)=log10(errbits/(length(bitcoded))); err2=(bitdecoded2~=bitcoded); errbits2=sum(err2);
ser2(k)=log10(errbits2/(length(bitcoded))); err3=(bitdecoded3~=bitcoded); errbits3=sum(err3);
ser3(k)=log10(errbits3/(length(bitcoded))); end
plot(snr,ser,'b-*') hold on
plot(snr,ser2,'r-o') hold on
plot(snr,ser3,'k-+') grid on
legend('有信道编码没有交织1ms衰落','有信道编码有交织1ms衰落','有信道编码有交织2ms衰落'); xlabel('Eb/No(dB)'); ylabel('SER');
title('2PSK衰落信道有无交织性能比较');
toc %Elapsed time is 1504.524053 seconds.%该程序运行时间