找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2959|回复: 0
打印 上一主题 下一主题
收起左侧

OFDM正交频分复用仿真 matlab代码

[复制链接]
跳转到指定楼层
楼主
OFDM是正交频分复用,是通信原理里面的,蛮难的
资料分享
  1. %该程序用来完成对输入信号进行OFDM调制,属于《链路级仿真软件设计》程序二的调制解调模块

  2. function [y]=ofdm(x)
  3. %[y]=ofdm(x)
  4. %x是1x(Lp+8)的复向量,其中向量元素为4QAM调制符号,表示经过4QAM调制的结果数据。
  5. %y是1x(67.5*10e(-6)/Ts) 的复向量,其中向量元素是OFDM发送端处理的结果,表示发送端的基带信号在时域上,采样速率为Ts的采样结果,信号持续时间为 (3 symbols)。

  6. %参数初始化设置
  7. %输入的频域信号中包含的OFDM符号数目
  8. s=50;
  9. %输入的信号长度为
  10. L=length(x);
  11. %子载波数
  12. sub_carriers=2048;

  13. %把输入分为S个符号,每个符号长为symbol_used_len
  14. symbol_used_len=L/s;
  15. %循环前缀的长度
  16. cp=256;
  17. %每一个OFDM符号的抽样值应补‘0’个数zeros_pad
  18. zeros_pad=sub_carriers-symbol_used_len;
  19. %每一个OFDM符号一侧应该补‘0’个数zeros_pad_side
  20. zeros_pad_side=zeros_pad/2;

  21. %对输入信号进行分割,分割为s个符号,再对每个符号进行FFT运算,实现OFDM解调,并保证能量不变
  22. time_domain_x_link=[];
  23. for I=0:(s-1)
  24.     %对输入进行分割
  25.     x_temp=x(I*symbol_used_len+1:I*symbol_used_len+symbol_used_len);
  26.     %对每个分割的部分进行补零操作,使其长为sub_carriers
  27.     x_temp_pad=[zeros(1,zeros_pad_side),x_temp,zeros(1,zeros_pad_side)];
  28.     %对每个符号进行IFFT运算
  29.     time_domain_x_temp=ifft(x_temp_pad)*sqrt(sub_carriers);
  30.     %对每个符号添加循环前缀
  31.     time_domain_x_cp_temp=[time_domain_x_temp(sub_carriers-cp+1:sub_carriers),time_domain_x_temp];
  32.     %将符号连接成为串行数据流
  33.     time_domain_x_link=[time_domain_x_link,time_domain_x_cp_temp];
  34. end
  35. %将信息流输出
  36. y=time_domain_x_link;
复制代码

51hei.png (8.94 KB, 下载次数: 86)

51hei.png

完整的OFDM仿真程序.rar

134.2 KB, 下载次数: 12, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表