Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-06-23, 01:47   #1
Jael
普通会员
 
注册日期: 2009-03-05
年龄: 37
帖子: 34
声望力: 17
Jael 正向着好的方向发展
默认 viterbi软判决问题

大家好,我编了一个程序,如下:
clear all;
clc;

cycl = 50;
snr_db = 0:1:10;
% 输入信息
msg = randint(1,1024);

ber0 = zeros(cycl,length(snr_db));
ber1 = zeros(cycl,length(snr_db));
ber2 = zeros(cycl,length(snr_db));

% Trellises
trel = poly2trellis(3,[5 7]); %Define trellis for rate 1/2 code.
for n = 1:cycl
for x = 1:length(snr_db)
% Code words
code = convenc(msg,trel); % Encode.
% Interleaver
state = 20;
inter = randintrlv(code,state);
% BPSK 调制
s0 = sign(msg - 0.5);
s1 = sign(inter-0.5);
s2 = sign(code-0.5);
% AWGN Channel
add_noise0=awgn(s0,snr_db(x),'measured');
add_noise1=awgn(s1,snr_db(x),'measured');
add_noise2=awgn(s2,snr_db(x),'measured');
% Deinterleaver with noise for soft decoding
deinter_noise = randdeintrlv(add_noise2,state);
% 解调
r_0 = 0.5*sign(add_noise0) + 0.5;
r_1 = 0.5*sign(add_noise1) + 0.5;
r_2 = 0.5*sign(add_noise2) + 0.5;
% Deinterleaver
deinter_1 = randdeintrlv(r_1,state);
% Traceback length
tblen = 5;
% vitdec 硬判决
decoded1 = vitdec(deinter_1,trel,tblen,'cont','hard');
% vitdec 软判决
[y,qcode] = quantiz(deinter_noise,[-.75 -.5 -.25 0 .25 .5 .75],7:-1:0);
decoded2 = vitdec(qcode',trel,tblen,'cont','soft',3);
% 比较误码率
[num0,rat0] = biterr(r_0,msg);
[num1,rat1] = biterr(double(decoded1(tblen+1:end)),msg(1:end-tblen));
[num2,rat2] = biterr(decoded2(tblen+1:end),(msg(1:end-tblen)'));
ber0(n,x) = rat0;
ber1(n,x) = rat1;
ber2(n,x) = rat2;
end
end
ber0 = mean(ber0);
ber1 = mean(ber1);
ber2 = mean(ber2);

semilogy(snr_db,ber0,'b-o',snr_db,ber1,'r-s',snr_db,ber2,'k-p');
xlabel('SNR (dB)');
ylabel('BER');
legend('Uncoded','Hard Coded','Soft Coded');
title('Performance of convolutional code with rate 1/2');
运行后发现软判决为一条直线,不知哪里出错了?应该如何修改程序呢?急啊,请高人指点
另外如果想定义高斯信道,若不想用awgn函数,该如何从定义出发编写高斯信道呢?
Jael 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 15:24


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.