MATLAB OFDM卷积编码程序及代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%bin22deci.m

function y=bin22deci(x)

%将二进制数转化为十进制数

t=size(x,2);

y=(t-1:-1:0);

y=2.^y;

y=x*y';

%************************end of file***********************************

%comb.m

%AWGN加噪声程序

function[iout,qout]=comb(idata,qdata,attn)

%******************variables*************************

%idata:输入I信道数据

%qdata:输入Q信道数据

%iout输出I信道数据

%qout输出Q信道数据

%attn:由信噪比导致的衰减系数

%******************************************************

iout=randn(1,length(idata)).*attn;

qout=randn(1,length(qdata)).*attn;

iout=iout+idata(1:length(idata));

qout=qout+qdata(1:length(qdata));

%************************end of file***********************************

%crdemapping.m

%数据逆映射载波程序

function[iout,qout]=crdemapping(idata,qdata,fftlen,nd);

%******************variables*************************

%idata:输入I信道的数据

%qdata:输入Q信道的数据

%iout:输出I信道的数据

%qout:输出Q信道的数据

%fftlen:FFT的长度

%nd:OFDM符号数

%*****************************************************

iout(1:26,:)=idata(2:27,:);

qout(1:26,:)=qdata(2:27,:);

iout(27:52,:)=idata(39:64,:);

qout(27:52,:)=qdata(39:64,:);

%********************end of file***************************

%crmapping.m

%数据映射载波程序

function[iout,qout]=crmapping(idata,qdata,fftlen,nd);

%******************variables*************************

%idata:输入I信道的数据

%qdata:输入Q信道的数据

%iout:输出I信道的数据

%qout:输出Q信道的数据

%fftlen:FFT的长度

%nd:OFDM符号数

%*****************************************************

iout=zeros(fftlen,nd);

qout=zeros(fftlen,nd);

iout(2:27,:)=idata(1:26,:);

qout(2:27,:)=qdata(1:26,:);

iout(39:64,:)=idata(27:52,:);

qout(39:64,:)=qdata(27:52,:);

%********************end of file***************************

%deci22bin.m

function y=deci22bin(x,t)

%十进制数x转化为二进制数,二进制数至少表示为t位

y=zeros(size(x,1),t);

for j=1:size(x,1)

i=1;

while x(j)>=0&i<=t

y(j,i)=rem(x(j),2);%x(j)为偶数时,y(j,i)为0;反之为1

x(j)=(x(j)-y(j,i))/2;

i=i+1;

end

y(j,:)=y(j,t:-1:1);%倒序排列

end

%************************end of file***********************************

%giins1.m

%插入保护间隔程序

function[iout,qout]=giins1(idata,qdata,fftlen,gilen,nd);

%******************变量*************************

%idata:输入I信道数据

%qdata:输入Q信道数据

%iout:输出I信道数据

%qout:输出Q信道数据

%fftlen:FFT长度(points)

%gilen:保护间隔长度(points)

%*****************************************************

idata1=reshape(idata,fftlen,nd);

qdata1=reshape(qdata,fftlen,nd);

idata2=[idata1(fftlen-gilen+1:fftlen,:);idata1];

qdata2=[qdata1(fftlen-gilen+1:fftlen,:);qdata1];

iout=reshape(idata2,1,(fftlen+gilen)*nd);

qout=reshape(qdata2,1,(fftlen+gilen)*nd);

%********************end of file***************************

%qpskdemod1.m

%QPSK解调程序

function[demodata]=qpskdemod1(idata,qdata,para,nd,ml)

%******************variables*************************

%idata:输入I信道数据

%qdata:数据Q信道数据

%demodata:解调后数据(para-by-nd matrix)

%para:并行信道数

%nd:符号数

%ml:调制数

%(QPSK->2 16QAM->4)

%*****************************************************

demodata=zeros(para,ml*nd);

demodata((1:para),(1:ml:ml*nd-1))=idata((1:para),(1:nd))>=0; demodata((1:para),(2:ml:ml*nd))=qdata((1:para),(1:nd))>=0;

%************************end of file***********************************

%qpskmod1.m

%QPSK调制程序

function[iout,qout]=qpskmod1(paradata,para,nd,ml)

%******************variables*************************

%paradata:输入数据

%iout:输出数据I

%qout:输出数据Q

%para:并行信道数

%nd:数据数

%ml:调制数

%(QPSK->2 16QAM->4)

%*****************************************************

m2=ml./2;

paradata2=paradata.*2-1;

count2=0;

相关文档
最新文档