云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > OFDM matlab源程序

OFDM matlab源程序

  • 62 次阅读
  • 3 次下载
  • 2025/12/9 23:22:50

%到符号尾部,将每个OFDM符号的后32个数据放到符号头部, %升采样是通过中间插零的方式实现

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % din 输入数据 % upsample 升采样倍数 % dout 输出数据

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

data_buf=[din(225:256),din,din(1:32)];

temp(1,:)=data_buf;

temp(2:upsample,:)=zeros(upsample-1,length(data_buf)); dout_temp=reshape(temp,1,length(data_buf)*upsample); dout=dout_temp(1:end);

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

%************************beginning of file***************************** %cic_inter.m

%发射机的CIC滤波器设计 function dout=cic_inter(din,r)

%插值CIC滤波器通过复制样值实现升采样

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % din 输入数据

% r 升采样的插值因子 % dout 输出数据

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

din_1d=[0,din];

diff1=[din,0]-din_1d;

diff1_1d=[0,diff1(1:end-1)];

diff2=[diff1(1:end-1),0]-diff1_1d; for i=1:r

temp1(i,:)=diff2(1:end-1); end

temp2=reshape(temp1,1,length(diff2(1:end-1))*r); data_int=temp2;

for i=1:length(data_int)

int1(i)=sum(data_int(1:i)); int2(i)=sum(int1(1:i)); end

dout=int2;

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

%************************beginning of file***************************** %up_convert_ofdm.m

%用DDS的方式实现上变频

function dout=up_convert_ofdm(fwc_up,dini,dinq)

%fwc_up是上变频处的频率控制字,每个控制字对应一个载波频率 %count_dds_up是用于查找存储表的整数值,

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % fwc_down 上变频处的频率控制字 % dini 输入数据的实部 % dinq 输入数据的虚部 % dout 输出数据

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

global seq_num global count_dds_up

for mk=1:length(dini)

if (seq_num==1) & (mk==1) count_dds_up=0; else

count_dds_up=count_dds_up+fwc_up; if count_dds_up>=128

count_dds_up=count_dds_up-128; end end

[up_sin,up_cos]=ram_sin(count_dds_up); up_sin_t(mk)=up_sin; up_cos_t(mk)=up_cos; end

for xl=1:length(dini)

DUCdata(xl)=dini(xl)*up_cos_t(xl)-dinq(xl)*up_sin_t(xl); end

dout=DUCdata;

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

%************************beginning of file***************************** %ram_sin.m

%构造用于DDS的查找表

function [ysin,ycos]=ram_sin(adr) Ys方式需要的sin表 %ram_sin为寄存器名称

-r为输入地址,y为读出数据

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % adr 输入地址 % ysin 输出的正弦值 % ycos 输出的余弦值

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

anl_inc=2*pi/128; for n=1:128

data_sin(n)=sin((n-1)*anl_inc); data_cos(n)=cos((n-1)*anl_inc); end

ysin=data_sin(adr+1); ycos=data_cos(adr+1);

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

%************************beginning of file***************************** %guiyi_DUCdata.m

function [dataout,datamax]=guiyi_DUCdata(datain)

%实现数据的归一化

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % datain 输入数据 % dataout 输出数据

% datamax 输入数据中的最大值

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

datamax=max(abs(datain)); dataout=datain./datamax;

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

%************************beginning of file***************************** %down_convert_ofdm.m

function [douti,doutq]=down_convert_ofdm(fwc_down,din) %用DDS的方式实现下变频

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % fwc_down 下变频处的频率控制字 % din 输入数据

% douti 输出数据的实部 % doutq 输出数据的虚部

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

global seq_num global count_dds_down

global count_dds_down_tmp

for mkd=1:length(din)

if (seq_num==1) & (mkd==1) count_dds_down=0;

count_dds_down_tmp=0; else

count_dds_down=round(count_dds_down_tmp+fwc_down); count_dds_down_tmp=count_dds_down_tmp+fwc_down; if count_dds_down>=128

count_dds_down=count_dds_down-128;

count_dds_down_tmp=count_dds_down_tmp-128; end end

[up_sin_d,up_cos_d]=ram_sin(count_dds_down); up_sin_td(mkd)=up_sin_d; up_cos_td(mkd)=up_cos_d;

DDCdatai(mkd)=din(mkd)*up_cos_td(mkd); DDCdataq(mkd)=-din(mkd)*up_sin_td(mkd); end

douti=DDCdatai; doutq=DDCdataq;

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

%************************beginning of file***************************** %cic_deci.m

%接收机的CIC滤波器设计 function dout=cic_deci(din,r,init)

%抽取CIC滤波器通过降采样实现

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++

搜索更多关于: OFDM matlab源程序 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

%到符号尾部,将每个OFDM符号的后32个数据放到符号头部, %升采样是通过中间插零的方式实现 %+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % din 输入数据 % upsample 升采样倍数 % dout 输出数据 %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ data_buf=[din(225:256),din,din(1:32)]; temp(1,:)=data_buf; temp(2:upsample,:)=zeros(upsample-1,length(data_buf)); dout_temp=reshap

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com