一、获取代码方式

获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、OFDM简介

三、部分源代码

clear all
close all
%% 参数设定
N_FFT=256;%FFT点数
fs=4*10^6;%基带采样频率4MHz
fsub=15.625*10^3;%子载波频率间隔15.625KHz
%% 训练符号
%短训练符号频域表示
F_Shortpreamble(1:256)=[0,0,0,0,-1-1j,0,0,0,1-1j,0,0,0,1+1j,0,0,0,-1-1j,0,0,0,-1+1j,0,0,0,1-1j,0,0,0,1+1j,0,0,0, -1+1j,0,0,0, 1-1j,0,0,0, -1-1j,0,0,0, 1+1j,0,0,0, -1+1j,0,0,0, -1-1j,0,0,0, 1+1j,0,0,0, 1-1j,0,0,0,-1-1j,0,0,0, 1-1j,0,0,0, 1+1j,0,0,0, -1-1j,0,0,0, -1+1j,0,0,0, -1+1j,0,0,0, -1-1j,0,0,0, 1-1j,0,0,0, -1+1j,0,0,0,1+1j,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,1+1j,0,0,0,1+1j,0,0,0,1+1j,0,0,0,1-1j,0,0,0,-1+1j,0,0,0,1+1j,0,0,0,1+1j,0,0,0,1+1j,0,0,0,1-1j,0,0,0,-1+1j,0,0,0,1+1j,0,0,0,1+1j,0,0,0,1+1j,0,0,0,1-1j,0,0,0,-1+1j,0,0,0,1-1j,0,0,0,1-1j,0,0,0,1-1j,0,0,0,-1-1j,0,0,0,1+1j,0,0,0,-1+1j,0,0,0,-1+1j,0,0,0,-1+1j,0,0,0,1+1j,0,0,0,-1-1j,0,0,0];
%短训练符号时域表示
T_Shortpreamble(1:256)=ifft(F_Shortpreamble);
%长训练符号频域表示
F_Longpreamble(1:256)=[ 0, -1-j, 1+j, -1+j, -1+j, -1-j, 1+j, 1+j, 1+j, -1-j, 1+j, 1-j, 1-j, 1-j, -1+j,-1+j,-1+j, -1+j, 1-j, -1-j, -1-j, -1+j, 1-j, 1+j, 1+j, -1+j, 1-j, 1-j, 1-j, -1+j, 1-j, -1-j, -1-j, -1-j, 1+j,1+j, 1+j,1+j, 1-j, -1+j, -1+j, 1+j, -1-j, 1-j, 1-j, 1+j, -1-j, -1-j, -1-j, 1+j, -1-j, -1+j, -1+j, -1+j, 1-j, 1-j, 1-j, 1-j, -1+j,1+j, 1+j, -1-j, 1+j, -1+j, -1+j, -1-j, 1+j, 1+j, 1+j, -1-j, 1+j, 1-j, 1-j, 1-j, -1+j, -1+j, -1+j, -1+j, 1-j, -1-j,-1-j, 1-j, -1+j, -1-j, -1-j, 1-j, -1+j, -1+j, -1+j, 1-j, -1+j,1+j, 1+j, 1+j, -1-j, -1-j, -1-j, -1-j, 1+j, 1-j, 1-j, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1-j,1-j, -1-j, 1+j, 1-j, 1-j, -1+j, 1-j, 1-j, 1-j, 1+j, -1-j, 1+j, 1+j, -1-j, 1+j, -1-j, -1-j, 1-j, -1+j, 1-j, 1-j, -1-j, 1+j,1-j, 1-j, -1+j, 1-j, 1-j, 1-j, 1+j, -1-j, 1+j, 1+j, -1-j, 1+j, -1-j, -1-j, 1-j, -1+j, 1-j, 1-j, -1-j, 1+j, 1-j, 1-j, -1+j,1-j, 1-j, 1-j, 1+j, -1-j, 1+j, 1+j, -1-j, 1+j, -1-j, -1-j, 1-j, -1+j, 1+j, 1+j, 1-j, -1+j, 1+j, 1+j, -1-j, 1+j, 1+j,1+j, -1+j, 1-j, -1+j, -1+j, 1-j, -1+j, 1-j, 1-j,1+j, -1-j, -1-j, -1-j, -1+j, 1-j, -1-j, -1-j, 1+j, -1-j, -1-j, -1-j, 1-j,-1+j, 1-j, 1-j, -1+j, 1-j, -1+j,-1+j, -1-j, 1+j];
%长训练符号频域表示
T_Longpreamble(1:256)=ifft(F_Longpreamble);
%% 卷积编码
%[133 171]卷积码其实是卷积码(2,1,7)的最佳编码形式
signal = randi([0 1],1,1920);%编码器输入48比特
trellis=poly2trellis(7,[133 171]);%内部参数前者是卷积码的约束长度N,后者是根据输入输出连线情况的一个m*n矩阵,m为输入信号的个数,n为输出信号的个数。
con_code=convenc(signal,trellis);
figuresubplot(2,1,1)stairs(signal(1:50));ylabel('幅度');title('卷积编码前的数据');subplot(2,1,2)stairs(con_code(1:100));title('卷积编码后的数据');ylabel('幅度');
%% QPSK映射
bits_per_symbol=2;%每符号含比特数,QPSK调制
QPSK_code_bin=reshape(con_code,1920,bits_per_symbol);%1920是数据长度,进行矩阵变换,将1*3840的矩阵变换为1920*2的矩阵,前1920为第一列,后1920位第二列
QPSK_code_dec=2*QPSK_code_bin(:,1)+QPSK_code_bin(:,2);
txSig = pskmod(QPSK_code_dec,4,pi/4);
scatterplot(txSig)%星座图
%% 反傅里叶变换
temp=zeros(1,256);
temp([13 38 63 88 168 193 218 243])=1;%内插1
for m=1:10temp_data(m,2:12)=txSig((m-1)*192+1:(m-1)*192+11);temp_data(m,14:37)=txSig((m-1)*192+12:(m-1)*192+35);temp_data(m,39:62)=txSig((m-1)*192+36:(m-1)*192+59);temp_data(m,64:87)=txSig((m-1)*192+60:(m-1)*192+83);temp_data(m,89:100)=txSig((m-1)*192+84:(m-1)*192+95);temp_data(m,156:167)=txSig((m-1)*192+96:(m-1)*192+107);temp_data(m,169:192)=txSig((m-1)*192+108:(m-1)*192+131);temp_data(m,194:217)=txSig((m-1)*192+132:(m-1)*192+155);temp_data(m,219:242)=txSig((m-1)*192+156:(m-1)*192+179);temp_data(m,244:256)=txSig((m-1)*192+180:(m-1)*192+192);temp_data(m,:)=temp+temp_data(m,:);f_data(m,:)=ifft(temp_data(m,:))*16;figureplot(0:1/(255*4*10^6):1/(4*10^6),abs(f_data(m,:))');title('时域波形');xlabel('t/s');ylabel('幅度');
end
%% 加CP
data_cp=[f_data(:,193:end),f_data(:,:)];%数据加CP
Shortpreamble_cp=[T_Shortpreamble(:,193:end),T_Shortpreamble(:,:)];%短训练集加CP
Longpreamble_cp=[T_Longpreamble(:,193:end),T_Longpreamble(:,:)];%长训练集加CP
%% 并串变换
OFDM_frame=[Shortpreamble_cp.*32,Longpreamble_cp,reshape(data_cp.',[],1).'];
%% 上变频fc=4*4000000;  % 取载波fc为基带带宽的4倍%设采样频率为载波频率的四倍,则每个基带时隙内要输出16*320个符号;t=0:80*10^(-6)/(320*16):80*10^(-6)/320*length(OFDM_frame)-80*10^(-6)/(320*16);carrier=exp(j*(2*pi*(fc+25)*t));sam=kron(OFDM_frame,ones(1,16));frame_up=real(sam.*carrier);%上变频figuresubplot(2,1,1)plot(t,abs(frame_up));xlabel('t/s');ylabel('幅度');title('上变频后的时域波形');subplot(2,1,2)plot(abs(OFDM_frame));title('OFDM帧时域波形');xlabel('t/s');ylabel('幅度');
for SNR=2:100
% SNR=6;%% 信道
rxSig = awgn(frame_up,SNR/2);%高斯白噪声信道
%rxSig=frame_up;
% figure
% plot(rxSig,'r');
% hold on
% plot(frame_up,'b')
%% 下变频
carrier_cos=cos(2*pi*fc*t);
carrier_sin=-sin(2*pi*fc*t);%两路解调信号
carrier_cos_reshape=reshape(carrier_cos,16,length(carrier_cos)/16);
carrier_sin_reshape=reshape(carrier_sin,16,length(carrier_sin)/16);frame_up_reshape=reshape(rxSig,16,length(rxSig)/16);
rece_cos=frame_up_reshape'*carrier_cos_reshape/16*2;
rece_sin=frame_up_reshape'*carrier_sin_reshape/16*2;
for ii=1:length(OFDM_frame)rece_real(ii)=rece_cos(ii,ii);rece_im(ii)=rece_sin(ii,ii);
end
rece_down=rece_real+1i*rece_im;  %%下变频结束,得到基带复数信号
%% AGC自动增益控制
y=agc(rece_down,20,length(rece_down));
% figure
%  subplot(2,1,1)
%  plot(abs(rece_down));
%  ylabel('幅度');
%  title('下变频后的信号');
%  subplot(2,1,2)
%  plot(abs(y));
%  title('自动增益控制后的信号');
%  ylabel('幅度');
%% 帧检测
FrameStart=frame_detection(y,340);
frame=[y(FrameStart+1:end),zeros(1,256)];
%% 去CP与FFT去导频
for i=1:10data_rx(i,:)=frame(65+i*320:(i+1)*320);
%     data_rx(i,:)=y(65+(i+1)*320:(i+2)*320);data_r(i,:)=fft(data_rx(i,:))/sqrt(N_FFT);data(i,1:11)=data_r(i,2:12);data(i,12:35)=data_r(i,14:37);data(i,36:59)= data_r(i,39:62);data(i,60:83)=data_r(i,64:87);data(i,84:95)=data_r(i,89:100);data(i,96:107)=data_r(i,156:167);data(i,108:131)=data_r(i,169:192);data(i,132:155)=data_r(i,194:217);data(i,156:179)=data_r(i,219:242);data(i,180:192)=data_r(i,244:256);
end

四、运行结果









五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.

【OFDM通信】基于matlab OFDM通信系统仿真【含Matlab源码 315期】相关推荐

  1. 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】

    一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  2. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  3. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  4. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  5. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  6. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  7. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  8. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  9. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  10. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. 如何用手机打开dcm格式图片_手机也能当扫描仪用?如何用手机扫描图片?
  2. 在featureDataset和workspace下創建featureclass
  3. [转载]基于数据挖掘技术入侵检测系统研究
  4. 系统已有MYSQL环境,如何安装宝塔面板
  5. 密立根油滴实验的计算机仿真实验报告,H-D光谱实验的计算机仿真
  6. 前端笔记-vue cli中v-bind动态数据实时更新
  7. 机器学习笔记2 – sklearn之iris数据集
  8. 在Eclipse中搭建Python开发环境
  9. mysql中 视图的优缺点_SQL中使用视图的优点和缺点是什么
  10. access ps4战地1要ea_EA游戏订阅服务将于2019年7月登陆PS4平台,抢先游玩枪车球新作...
  11. Extjs学习(3):事件和动作
  12. catia二次开发:结构树文档,录制宏编程思路,遍历结构树,catia根对象窗体属性,打开导出文件,cameras工具条,viewer对象和截图,catia发送命令
  13. 揭秘小红书的种草套路
  14. 【网页处理与文本分析】某电视剧弹幕信息情感分析
  15. 揭秘强开微粒贷骗局 看完你就明白了
  16. SAP CO T-Code
  17. 刚刚,Google AI 部门换帅,李飞飞宣布离职!
  18. js Web APIs
  19. 记一次软考高项【信息系统项目管理师】重点
  20. Facebook的利润创下历史新高,不受最近的丑闻影响

热门文章

  1. MFC学习笔记1---准备工作
  2. linq to sql取出随机记录/多表查询/将查询出的结果生成xml
  3. 后RCNN时代的物体检测及实例分割进展
  4. 20191011每日一句
  5. 190115每日一句
  6. 沃尔沃汽车:通过基于模型的开发工具实现汽车软件模型结构度量
  7. Atitit 编程语言语言规范总结 语法部分 目录 1. 语言规范 3 2. Types 3 2.1.1. Primitive types 3 2.1.2. Compound types 4 3.
  8. Atitti 摘要算法 散列算法SHA1 和 MD5  crc32 目录 1.1. CRC(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长 1 1.1.1. 数据摘要算
  9. 高级人才、专业技术人才、技能人才 目录 1. 高级人才, 1 1.1. 专业技术人才 2 2. 专业技术人才 2 3. 高技能人才 3 1.高级人才, 可迁入本市市区落户,其配偶、未婚子女(含离
  10. Atitit java读取tif文件为空null的解决 图像处理