目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

在通信系统中,信道所能提供的带宽通常比传送一路信号所需的带宽要宽得多。如果一个信道只传送一路信号是非常浪费的,为了能够充分利用信道的带宽,就可以采用频分复用的方法。

OFDM主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI) 。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。

OFDM技术是HPA联盟(HomePlug Powerline Alliance)工业规范的基础,它采用一种不连续的多音调技术,将被称为载波的不同频率中的大量信号合并成单一的信号,从而完成信号传送。由于这种技术具有在杂波干扰下传送信号的能力,因此常常会被利用在容易受外界干扰或者抵抗外界干扰能力较差的传输介质中。

一个OFDM符号之内包含多个经过相移键控(PSK)或者正交幅度调制(QAM)的子载波。

一旦要把传输的比特分配到各个子载波上,某一种调制模式则将他们映射为子载波的幅度和相位,通常采用等效基带信号来描述OFDM的输出信号:

其中信号的实部和虚部分别对应OFDM的同相和正交分量,在实际系统可以分别与对应的c o s coscos分量和s i n sinsin分量相乘。

2.仿真效果预览

matlab2022a仿真如下:

3.MATLAB核心程序

 %=====================添加循环前缀与后缀====================================XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);for k=1:symbols_per_carrier;for i=1:IFFT_bin_length;XX(k,i+GI)=signal_after_IFFT(k,i);endfor i=1:GI;XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);%添加循环前缀endfor j=1:GIP;XX(k,IFFT_bin_length+GI+j)=signal_after_IFFT(k,j);%添加循环后缀endendtime_wave_matrix_cp=XX;%添加了循环前缀与后缀的时域信号矩阵,此时一个OFDM符号长度为IFFT_bin_length+GI+GIP=660%==============OFDM符号加窗==========================================windowed_time_wave_matrix_cp=zeros(1,IFFT_bin_length+GI+GIP);for i = 1:symbols_per_carrierwindowed_time_wave_matrix_cp(i,:) = real(time_wave_matrix_cp(i,:)).*rcoswindow(beta,IFFT_bin_length+GI)';%加窗  升余弦窗end %========================生成发送信号,并串变换==================================================windowed_Tx_data=zeros(1,symbols_per_carrier*(IFFT_bin_length+GI)+GIP);windowed_Tx_data(1:IFFT_bin_length+GI+GIP)=windowed_time_wave_matrix_cp(1,:);for i = 1:symbols_per_carrier-1 ;windowed_Tx_data((IFFT_bin_length+GI)*i+1:(IFFT_bin_length+GI)*(i+1)+GIP)=windowed_time_wave_matrix_cp(i+1,:);%并串转换,循环后缀与循环前缀相叠加end%=======================================================Tx_data=reshape(windowed_time_wave_matrix_cp',(symbols_per_carrier)*(IFFT_bin_length+GI+GIP),1)';%加窗后 循环前缀与后缀不叠加 的串行信号%=================================================================temp_time1 = (symbols_per_carrier)*(IFFT_bin_length+GI+GIP);%加窗后 循环前缀与后缀不叠加 发送总位数figure (2)subplot(2,1,1);plot(0:temp_time1-1,Tx_data );%循环前缀与后缀不叠加 发送的信号波形grid onylabel('Amplitude (volts)')xlabel('Time (samples)')title('循环前后缀不叠加的OFDM Time Signal')temp_time2 =symbols_per_carrier*(IFFT_bin_length+GI)+GIP;subplot(2,1,2);plot(0:temp_time2-1,windowed_Tx_data);%循环后缀与循环前缀相叠加 发送信号波形grid onylabel('Amplitude (volts)')xlabel('Time (samples)')title('循环前后缀叠加的OFDM Time Signal')%===============加窗的发送信号频谱=================================symbols_per_average = ceil(symbols_per_carrier/5);%符号数的1/5,10行avg_temp_time = (IFFT_bin_length+GI+GIP)*symbols_per_average;%点数,10行数据,10个符号averages = floor(temp_time1/avg_temp_time);average_fft(1:avg_temp_time) = 0;%分成5段for a = 0:(averages-1)subset_ofdm = Tx_data(((a*avg_temp_time)+1):((a+1)*avg_temp_time));%利用循环前缀后缀未叠加的串行加窗信号计算频谱subset_ofdm_f = abs(fft(subset_ofdm));%分段求频谱average_fft = average_fft + (subset_ofdm_f/averages);%总共的数据分为5段,分段进行FFT,平均相加endaverage_fft_log = 20*log10(average_fft);figure (3)subplot(2,1,2)plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log)%归一化  0/avg_temp_time  :  (avg_temp_time-1)/avg_temp_timehold onplot(0:1/IFFT_bin_length:1, -35, 'rd')grid onaxis([0 0.5 -40 max(average_fft_log)])ylabel('Magnitude (dB)')xlabel('Normalized Frequency (0.5 = fs/2)')title('加窗的发送信号频谱')%====================添加噪声=================================Tx_signal_power = var(windowed_Tx_data);%发送信号功率linear_SNR=10^(SNR/10);%线性信噪比noise_sigma=Tx_signal_power/linear_SNR;noise_scale_factor = sqrt(noise_sigma);%标准差sigmanoise=randn(1,((symbols_per_carrier)*(IFFT_bin_length+GI))+GIP)*noise_scale_factor;%产生正态分布噪声序列Rx_data=windowed_Tx_data +noise;%接收到的信号加噪声%=====================接收信号  串/并变换 去除前缀与后缀==========================================Rx_data_matrix=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);for i=1:symbols_per_carrier;Rx_data_matrix(i,:)=Rx_data(1,(i-1)*(IFFT_bin_length+GI)+1:i*(IFFT_bin_length+GI)+GIP);%串并变换endRx_data_complex_matrix=Rx_data_matrix(:,GI+1:IFFT_bin_length+GI);%去除循环前缀与循环后缀,得到有用信号矩阵%==============================================================%                      OFDM解码   16QAM解码%=================FFT变换=================================Y1=fft(Rx_data_complex_matrix,IFFT_bin_length,2);%OFDM解码 即FFT变换Rx_carriers=Y1(:,carriers);%除去IFFT/FFT变换添加的0,选出映射的子载波Rx_phase =angle(Rx_carriers);%接收信号的相位Rx_mag = abs(Rx_carriers);%接收信号的幅度figure(4);polar(Rx_phase, Rx_mag,'bd');%极坐标坐标下画出接收信号的星座图title('极坐标下的接收信号的星座图')%======================================================================[M, N]=pol2cart(Rx_phase, Rx_mag);Rx_complex_carrier_matrix = complex(M, N);figure(5);plot(Rx_complex_carrier_matrix,'*r');%XY坐标接收信号的星座图title('XY坐标接收信号的星座图')axis([-4, 4, -4, 4]);grid on%====================16qam解调=======================================Rx_serial_complex_symbols=reshape(Rx_complex_carrier_matrix',size(Rx_complex_carrier_matrix, 1)*size(Rx_complex_carrier_matrix,2),1)' ;Rx_decoded_binary_symbols=demoduqam16(Rx_serial_complex_symbols);%============================================================baseband_in = Rx_decoded_binary_symbols;figure(6);subplot(2,1,1);stem(baseband_out(1:100));title('输出待调制的二进制比特流')subplot(2,1,2);stem(baseband_in(1:100));title('接收解调后的二进制比特流')
A91

4.完整MATLAB

V

基于matlab的OFDM通信链路仿真,输出OFDM频谱,星座图,收发时域波形相关推荐

  1. CPOFDM-16QAM性能仿真,输出接收端的星座图

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 CP-OFDM(Cyclic Prefix Orthogonal Frequency Divisio ...

  2. 码分复用的matlab仿真,基于matlab的多路时分复用仿真.doc

    基于matlab的多路时分复用仿真 通信系统原理综设实验报告 多路时分复用matlab仿真系统 教师评语: 引言 在实际的通信系统中,为了扩大通信链路的容量,提高通信系统的利用率,需要在一条链路上传输 ...

  3. 基于matlab的时分复用实现,基于matlab的多路时分复用仿真.doc

    基于matlab的多路时分复用仿真.doc 通信系统原理综设实验报告多路时分复用matlab仿真系统教师评语:1.引言在实际的通信系统中,为了扩大通信链路的容量,提高通信系统的利用率,需要在一条链路上 ...

  4. matlab中仿真中接地,基于Matlab的配电网接地故障仿真

    基于Matlab的配电网接地故障仿真 ""#年第!$卷第%&期!! 电力系统 基于;/6:/C的配电网接地故障仿真 &&! 蒙!恩!!!王巨丰!龙浩然 !& ...

  5. 基于Matlab使用地面雷达探测和跟踪LEO卫星星座仿真(附源码)

    目录 一.从 TLE 文件导入卫星星座 二.模拟合成检测和跟踪星座 2.1 对空间监视雷达进行建模 2.2 雷达处理链 2.3 定义跟踪器 2.4 运行模拟 三.总结 四.程序 此示例演示如何导入卫星 ...

  6. 基于matlab数字交换网络的仿真,基于MATLAB数字交换网络的仿真

    - 55 - 基于 MATLAB 数字交换网络的仿真 燕慧英,时永鹏,王松德 (洛阳师范学院,河南 洛阳 471022) [摘 要]为了帮助学生更好的理解程控数字交换的原理,文章在阐述组成数字交换网络 ...

  7. 模糊控制洗衣机MATLAB模型,基于matlab的洗衣机模糊控制仿真

    基于matlab的洗衣机模糊控制仿真 基于 Matlab 的洗衣机模糊控制仿真模糊洗衣机是一个多输入多输出的控制系统.在实际中,模糊推理的前件和后件之间的关系对于不同的因素有所不同.例如,肮脏程度和水 ...

  8. matlab干涉全息图,基于MATLAB的计算全息干涉图仿真

    第22 卷 第2 期 2006 年4 月 福建师范大学学报 (自然科学版) Journal of Fujian Normal U niversity (N atural Science Edition ...

  9. matlab 悬架,基于MATLAB的汽车悬架仿真研究.doc

    基于MATLAB的汽车悬架仿真研究 基于MATLAB的汽车悬架仿真研究 周新鹏 (昆明理工大学交通工程学院,云南 昆明) 摘要:针对不同悬架的性能特点,分别建立了被动悬架.主动悬架的车身与车轮二自由度 ...

最新文章

  1. 视觉SLAM技术应用
  2. 在selenium中使用css选择器进行元素定位(一)
  3. Linux性能测试 KSysguard工具
  4. 牛客网在线编程java_NowCoder
  5. 错失双节福利?这12本新书投送了解一下
  6. Office 365 online的基本概念
  7. oracle用中文linux,linux+oracle中文乱码
  8. python 对 list[list] 矩阵进行逆时针旋转90度 matrix = list(map(list, zip(*matrix)))[::-1]
  9. 爬虫应对银行安全控件
  10. 人人商城小程序消息服务器配置,人人商城小程序前端对接教程
  11. 宅男福利——在控制台上跳极乐净土(音频版)
  12. Chrome主页被恶意篡改
  13. 计算机bios无法进入安全模式,电脑的BIOS设置能进入安全模式吗
  14. android killer使用方法,AndroidKiller安装、设置及使用教程
  15. elementUI里面upload组件上传图片时选择图片之后不显示图片的问题,
  16. IDEA绝对好用的十大插件,不接受反驳
  17. 高德地图 去掉左下角logo
  18. CString彻底分析,很强悍的啊
  19. 3Dmax_三维模型无法处理平滑解决方案
  20. 车路协同、车联网、智慧交通、智能网联车、自动驾驶、无人驾驶、高精度地图

热门文章

  1. 微服务连载(二)漫谈何时从单体架构迁移到微服务?
  2. 教资面试合格率是怎么算的?
  3. Android一个通用的下拉框适配器(kotlin版本)
  4. 监控工具——Metrics的Histogram可配置项
  5. 操作系统-请编程建立 3 个并发协作进程,它们分别完成 f(x,y)、f(x)、f(y)
  6. 软考高项 : (1)论信息系统项目的人力资源管理
  7. 2014年秋浙大远程教育计算机离线作业.计算机基础知识题2,2014春浙大远程计算机应用基础第4次作业4.Excel知识题.doc...
  8. Bartender 4 for Mac菜单栏无忧管理
  9. cnn 部分初级代码
  10. 金蝶K3案例教程固定资产后台配置