matlab中trel,求助求助!!!!急急急!!!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

clear;

clc;

SNR=10; % 信噪比

fl=128; % 设置FFT长度

Ns=6; %设置一个祯结构中OFDM信号的个数

para=128;%设置并行传输的子载波个数

sr=250000; %符号速率

br=sr.*2;% 每个子载波的比特率

gl=32; %保护时隙的长度

SNRdB=0:0.5:3;%信噪比范围

declen=40;%译码深度

SNRnum=length(SNRdB);%信噪比数目

iter=10;%迭代次数

for i=1:SNRnum

for j=1:iter

%----------------卷积码开始----------------

trel=poly2trellis(9,[561 753]);%卷积码(2,1,9)网格图,约束条件9

siglen=100000;

msg=randint(siglen,1);

encode=convenc(msg,trel,0);%从0状态开始卷积码

%----------------卷积码结束-------------------

Signal=encode;

length(Signal)

%Signal=rand(1,para*Ns*2)>0.5;%产生0,1 随即序列,符号数为para*Ns*2

for i=1:para

for j=1:Ns*4

SigPara(i,j)=Signal(i*j);%串并变换

end

end

length(SigPara)

%QPSK调制,将数据分为两个通道

for j=1:Ns*2

ich(:,j)=SigPara(:,2*j-1);

qch(:,j)=SigPara(:,2*j);

end

kmod=1./sqrt(2);

ich1=ich.*kmod;

qch1=qch.*kmod;

x=ich1+qch1.*sqrt(-1); %频域数据变时域

y=ifft(x);

ich2=real(y); %I信道取变换后的实部

qch2=imag(y); %信道取变换后的虚部

%插入保护间隔

ich3=[ich2(fl-gl+1:fl,:);ich2];

qch3=[qch2(fl-gl+1:fl,:);qch2];

%并串变换

ich4=reshape(ich3,1,(fl+gl)*Ns*2);

qch4=reshape(qch3,1,(fl+gl)*Ns*2);

%形成复数发射数据

TrData=ich4+qch4.*sqrt(-1);

length(TrData)

%接收机

%加入高斯白噪声

ReData=awgn(TrData,SNR,'measured');

%ReData=TrData;

%接收端

%移去保护间隔

idata=real(ReData);

qdata=imag(ReData);

idata1=reshape(idata,fl+gl,Ns*2);

qdata1=reshape(qdata,fl+gl,Ns*2);

idata2=idata1(gl+1:gl+fl,:);

qdata2=qdata1(gl+1:gl+fl,:);

%FFT

Rex=idata2+qdata2*sqrt(-1);

ry=fft(Rex);

ReIChan=real(ry);

ReQChan=imag(ry);

ReIchan=ReIChan/kmod;

ReQchan=ReQChan/kmod;

%QPSK逆映射

for j=1:Ns*2

RePara(:,2*j-1)=ReIChan(:,j);

RePara(:,2*j)=ReQChan(:,j);

end

ReSig=reshape(RePara,1,para*Ns*4);

length(ReSig)

%符号抽样判决

Resig=ReSig>0.5;

length(Resig)

parti=0:.15:.9;%设置量化等级划分

codebk=0:7;%设输入等级

[x,qcode]=quantiz(Resig,parti,codebk);%量化,准备维特比判决

decode=vitdec(qcode',trel,declen,'cont','soft',3);%维特比译码,量化级数=2^3

length(decode)

length(msg)

[errorbit,errorrate(j)]=biterr(decode(declen+1:end),msg(1:end-declen));%计算本次的信噪比【误码 误码率】=比较(比特数与总比特数)

end

BER(i)=sum(errorrate)/iter;%求平均信噪比

end

subplot(3,1,1),stem(ReSig(1:100)),grid minor;

title('resignal');

xlabel('x'),ylabel('y');

subplot(3,1,2),stem(Signal(1:100)),grid;

title('signal')

subplot(3,1,3),stem(Resig(1:100)),grid;

title('signal')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值