维特比软信息译码——高斯信道/瑞丽信道

%蒙特卡罗仿真(Rayleigh信道,软判决,2FSK)
%
Eb=2;     %每比特的能量,能量越大,卷积译码的误码率越小
k=1;
G=[1 0 1;1 1 1];
input=[1 0 1 0 1 1 1 0];
dsource=cnv_encd(G,k,input);
N=length(dsource);
% n=size(G,1);    %得到码字长度
% Ec=k*Eb/n;      %得到码元能量
channel_output=zeros(1,2*N);

% FSK调制
Tb=1;
f1=1000/Tb;
f2=f1+1/Tb;
%f2=1500/Tb;
phi=pi/4;
NN=500;
t=0:Tb/(NN-1):Tb;
u1=cos(2*pi*f1*t);   %若发送0,则已调信号为u1
u2=cos(2*pi*f2*t);   %若发送1,则已调信号为u2

% 通过Rayleigh信道
chan = rayleighchan(1/1000,0) 

for j=1:N
    if(dsource(j)==0)
        r=cos(2*pi*f1*t+phi);
        y= filter(chan,r);     %衰落
    else
        r=cos(2*pi*f2*t+phi);
        y= filter(chan,r);     %衰落
    end;
    %计算相关输出
           v1=sin(2*pi*f1*t);
           v2=sin(2*pi*f2*t);
           r1c(1)=y(1)*u1(1);
           r1s(1)=y(1)*v1(1);
           r2c(1)=y(1)*u2(1);
           r2s(1)=y(1)*v2(1);
             for k=2:NN
              r1c(k)=r1c(k-1)+y(k)*u1(k);
              r1s(k)=r1s(k-1)+y(k)*v1(k);
              r2c(k)=r2c(k-1)+y(k)*u2(k);
              r2s(k)=r2s(k-1)+y(k)*v2(k);
             end;
     %判决变量 
     r1=r1c(NN)^2+r1s(NN)^2;
     r2=r2c(NN)^2+r2s(NN)^2; 
%      if(abs(r1)>abs(r2))      %判决 
%          res(j)=0;
%      else
%          res(j)=1;
%      end;
     channel_output(1,2*j-1)=abs(r1);
     channel_output(1,2*j)=abs(r2);     %输如到然判决译码器
end;
%软判决维特比译码
k=1;
[decoder_output,survivor_state,cumulated_metric]=soft_2FSK_viterbi(G,k,channel_output);
D33

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值