b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

qam解调_qam16_mask与2ask不同

电脑杂谈  发布时间:2017-02-04 09:06:06  来源:网络整理
qam解调qam解调

这是一段QAM调制解调程序,想要加入如图片所示软解调算法程序,不知怎么添加。还望高手指点,感激不尽!!

%任务三(3):(2,1,4)卷积码+16QAM+AWGN+deqam+维特比软判决和硬判决对性能的影响

clear;

clc;

N=10000;

times=100;

EbN0_db=0:0.5:4.5;

EbN0=10.^(EbN0_db/10);

M=16;

k=log2(M);

codeRate=1/2;%码率

snr_db=EbN0_db+10*log10(k)-10*log10(1/codeRate);

K=5;%约束长度

trellis=poly2trellis(K,[23 33]);%产生格图

tblen=5*K;

%构造调制和解调对象

qamobj = modem.qammod('M', M, 'PhaseOffset', 0, 'SymbolOrder',...

'Gray', 'InputType', 'bit');

qamdeobj1=modem.qamdemod(qamobj);

qamdeobj2=modem.qamdemod(qamobj,'OutputType','bit','DecisionType','approximate llr',...

'NoiseVariance',1);%产生QAM解调对象,选择软判决解调形式。由于此时噪声方差未知,暂设为1

error_rate1=zeros(1,length(length(snr_db)));%硬判决

error_rate2=zeros(1,length(length(snr_db)));%软判决

for j=1:length(snr_db)

error_count1=0;

error_count2=0;

sigma=sqrt(1/(EbN0(j)*2*0.5));

qamdeobj.NoiseVaruance=sigma*sigma;

for jj=1:times

%信源产生

source=randsrc(N,1,[0 1]);

%卷积编码

code=convenc(source,trellis);%卷积编码

%调制

x_qam=modulate(qamobj,code);

%通过信道

y=awgn(x_qam,snr_db(j),'measured');

%解调

y_qam1=demodulate(qamdeobj1,y);

y_qam2=demodulate(qamdeobj2,y);

%卷积码译码

decode1=vitdec(y_qam1,trellis,tblen,'cont','hard');%硬判决

decode2=vitdec(y_qam2,trellis,tblen,'cont','unquant');%软判决

error_count1=error_count1+sum(source(1:N-tblen)~=decode1(tblen+1:N));

error_count2=error_count2+sum(source(1:N-tblen)~=decode2(tblen+1:N));

end;

error_rate1(j)=error_count1/(N*times);%取一个平均

error_rate2(j)=error_count2/(N*times);

end;

figure;

semilogy(EbN0_db,error_rate1,'r-x');

hold on;

semilogy(EbN0_db,error_rate2,'g-o');

grid on;

xlabel('Eb/N0(dB)');

ylabel('BER');

title('维特比软判决和硬判决性能比较(16QAM版)');

legend('硬判决','软判决');


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-30461-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...