📄 main.m
字号:
g=[1 0 1
1 1 1];
k=1;
M=16;
N=64;
snrdb=0:2:25;
for sn=1:length(snrdb)
code=randint(1,25600,[0,1]);
conv_code=conv(g,k,code);
w=1;
for u=1:log2(M):length(conv_code)
qam_source(w)=deci2(conv_code(u:u+log2(M)-1))+1;
w=w+1;
end
qam_code=qam16(qam_source);
for u=1:N:length(qam_code)
ifft_code(u:u+N-1,1)=ifft(qam_code(u:u+N-1,1))*100;
end
chan_noisy=awgn(ifft_code,snrdb(sn),'measured');
for u=1:N:length(ifft_code)
fft_code(u:u+N-1,1)=fft(chan_noisy(u:u+N-1,1))*1/100;
end
qam_decode=deqam16(fft_code,M);
j=1;
for u=1:length(qam_decode)
vtb_in(j:j+log2(M)-1)=binary(qam_decode(u)-1,log2(M));
j=j+log2(M);
end
for l=1:length(vtb_in)
if vtb_in(l)==0
vtb_in(l)=-1;
end
end
conv_decode=viterbis(g,k,vtb_in);
[num,rat(sn)]=symerr(code,conv_decode);
end
semilogy(snrdb,rat,'-.');
grid on;
xlabel('信噪比(dB)');
ylabel('误码率(Pe)');
legend('软判决---','硬判决-。-。');
hold on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -