1、源论文

  • 陈勇. 面向5G的F-OFDM关键技术研究[D].电子科技大学,2020.

本文相关参数均使用了论文中的参数,使用AWGN信道,但为了简单起见调制方式使用BPSK。

2、代码文件(Matlab R2019b)

  • 主文件
clc;
clear all;
%% 滤波器设计
M_1_object = M_1;
rrcFilterNum_M_1 = M_1_object.Numerator;
% wvtool(rrcFilterNum_M_1);
% fvtool(rrcFilterNum_M_1);
% pwelch(rrcFilterNum_M_1);
M_2_object = M_2;
rrcFilterNum_M_2 = M_2_object.Numerator;M_3_object = M_3;
rrcFilterNum_M_3 = M_3_object.Numerator;
%% 参数设计
%fft窗口
N_fft_1 = 2048;
N_fft_2 = 1024;
N_fft_3 = 8192;
%子带部分数据
band_width = 720000;    %子带带宽(Hz)
Sc_spacing_1 = 15000;   %子载波间隔
Sc_spacing_2 = 30000;
Sc_spacing_3 = 3750;
%保护子载波数
N1 = 0;
N21 = 3;
N22 = 3;
N3 = 0;
%时隙符号数
N_symbol_1 = 7;
N_symbol_2 = 5;
N_symbol_3 = 3;
%时隙时间(ms)
Num_frame_3 = 1000;
Time_1 = 0.5/Num_frame_3; %672bit/1ms
Time_2 = 0.2/Num_frame_3; %600bit/1ms
Time_3 = 1/Num_frame_3; %576bit/1ms
%子载波映射编号
N_sc_1 = band_width/Sc_spacing_1;
N_sc_2 = band_width/Sc_spacing_2;
N_sc_3 = band_width/Sc_spacing_3;M_2_min = 76;
M_2_max = 99;M_1_min = (M_2_min - 1 - N21)*Sc_spacing_2/Sc_spacing_1 -N1 -N_sc_1 +1;
M_1_max = (M_2_min - 1 - N21)*Sc_spacing_2/Sc_spacing_1 -N1;M_3_min = (M_2_max + N22)*Sc_spacing_2/Sc_spacing_3 +N3 +1;
M_3_max = (M_2_max + N22)*Sc_spacing_2/Sc_spacing_3 +N3 +N_sc_3;
%% F-OFDM
snrdB = -10:2:10;
for i =1:1:length(snrdB)
%OFDM符号生成
M_1_seq = -(randi([0,1],N_sc_1,1).*2-1);
M_2_seq = -(randi([0,1],N_sc_2,1).*2-1);
M_3_seq = -(randi([0,1],N_sc_3,1).*2-1);M_1_seq_symbol = [zeros(M_1_min-1,1);M_1_seq;zeros(N_fft_1-M_1_max,1)];
M_2_seq_symbol = [zeros(M_2_min-1,1);M_2_seq;zeros(N_fft_2-M_2_max,1)];
M_3_seq_symbol = [zeros(M_3_min-1,1);M_3_seq;zeros(N_fft_3-M_3_max,1)];sequence1_ifft = ifft(M_1_seq_symbol,N_fft_1)*sqrt(N_fft_1);
sequence2_ifft = ifft(M_2_seq_symbol,N_fft_2)*sqrt(N_fft_2);
sequence3_ifft = ifft(M_3_seq_symbol,N_fft_3)*sqrt(N_fft_3);%加CP
cpLen_1_6 = 144;
cpLen_1_1 = 160;
cpLen_2_4 = 200;
cpLen_2_1 = 224;
cpLen_3_3 = 2048;
cpLen_3_1 = 2048;txSigOFDM_1_slot = [sequence1_ifft(end-cpLen_1_1+1:end); sequence1_ifft;repmat([sequence1_ifft(end-cpLen_1_6+1:end); sequence1_ifft],N_symbol_1-1,1)];
txSigOFDM_2_slot = [sequence2_ifft(end-cpLen_2_1+1:end); sequence2_ifft;repmat([sequence2_ifft(end-cpLen_2_4+1:end); sequence2_ifft],N_symbol_2-1,1)];
txSigOFDM_3_slot = repmat([sequence3_ifft(end-cpLen_3_3+1:end); sequence3_ifft],N_symbol_3,1); %发送滤波
data_after_filter_1=upfirdn(repmat(txSigOFDM_1_slot,1/Time_1,1),rrcFilterNum_M_1,1);
data_after_filter_2=upfirdn(repmat(txSigOFDM_2_slot,1/Time_2,1),rrcFilterNum_M_2,1);
data_after_filter_3=upfirdn(repmat(txSigOFDM_3_slot,1/Time_3,1),rrcFilterNum_M_3,1); data_sum = data_after_filter_1((length(rrcFilterNum_M_1)-1)/2+1:end-((length(rrcFilterNum_M_1)-1)/2))...+ data_after_filter_2((length(rrcFilterNum_M_2)-1)/2+1:end-((length(rrcFilterNum_M_2)-1)/2))...+ data_after_filter_3((length(rrcFilterNum_M_3)-1)/2+1:end-((length(rrcFilterNum_M_3)-1)/2));
% wvtool(data_sum);
% fvtool(data_sum);
%awgn
data_sum_channel = awgn(data_sum, snrdB(i), 'measured');
fprintf('snrdB = %d\n',snrdB(i));
%接收滤波1
data_rx_filter_1=upfirdn(data_sum_channel,rrcFilterNum_M_1,1);
data_rx_filter_1_final = data_rx_filter_1((length(rrcFilterNum_M_1)-1)/2+1:end-((length(rrcFilterNum_M_1)-1)/2));
data_rx_filter_1_final_7 = reshape(data_rx_filter_1_final,length(data_rx_filter_1_final)*Time_1,1/Time_1);
data_rx_filter_1_final_7_1 = reshape(data_rx_filter_1_final_7(cpLen_1_1-cpLen_1_6+1:end,:),cpLen_1_6+N_fft_1,N_symbol_1/Time_1);
data_rx_filter_1_final_7_2 = data_rx_filter_1_final_7_1(cpLen_1_6+1:end,:);
data_rx_1_symbol_1_f = fft(data_rx_filter_1_final_7_2,N_fft_1)/sqrt(N_fft_1);
data_rx_1_symbol_f_real = ((real(data_rx_1_symbol_1_f(M_1_min:M_1_max,:))>0).*2-1)==repmat(M_1_seq,1,N_symbol_1/Time_1);
ErrorSample_1(i) = (numel(data_rx_1_symbol_f_real)-sum(sum(data_rx_1_symbol_f_real)))/numel(data_rx_1_symbol_f_real);
fprintf('Ber1 = %.6f\n',ErrorSample_1(i));
%接收滤波2
data_rx_filter_2=upfirdn(data_sum_channel,rrcFilterNum_M_2,1);
data_rx_filter_2_final = data_rx_filter_2((length(rrcFilterNum_M_2)-1)/2+1:end-((length(rrcFilterNum_M_2)-1)/2));
data_rx_filter_2_final_5 = reshape(data_rx_filter_2_final,length(data_rx_filter_2_final)*Time_2,1/Time_2);
data_rx_filter_1_final_5_1 = reshape(data_rx_filter_2_final_5(cpLen_2_1-cpLen_2_4+1:end,:),cpLen_2_4+N_fft_2,N_symbol_2/Time_2);
data_rx_filter_1_final_5_2 = data_rx_filter_1_final_5_1(cpLen_2_4+1:end,:);
data_rx_2_symbol_2_f = fft(data_rx_filter_1_final_5_2,N_fft_2)/sqrt(N_fft_2);
data_rx_2_symbol_f_real = ((real(data_rx_2_symbol_2_f(M_2_min:M_2_max,:))>0).*2-1)==repmat(M_2_seq,1,N_symbol_2/Time_2);
ErrorSample_2(i) = (numel(data_rx_2_symbol_f_real)-sum(sum(data_rx_2_symbol_f_real)))/numel(data_rx_2_symbol_f_real);
fprintf('Ber2 = %.6f\n',ErrorSample_2(i));
%接收滤波3
data_rx_filter_3=upfirdn(data_sum_channel,rrcFilterNum_M_3,1);
data_rx_filter_3_final = data_rx_filter_3((length(rrcFilterNum_M_3)-1)/2+1:end-((length(rrcFilterNum_M_3)-1)/2));
data_rx_filter_3_final_3 = reshape(data_rx_filter_3_final,length(data_rx_filter_3_final)*Time_3,1/Time_3);
data_rx_filter_3_final_3_1 = reshape(data_rx_filter_3_final_3(cpLen_3_1-cpLen_3_3+1:end,:),cpLen_3_3+N_fft_3,N_symbol_3/Time_3);
data_rx_filter_3_final_3_2 = data_rx_filter_3_final_3_1(cpLen_3_3+1:end,:);
data_rx_3_symbol_3_f = fft(data_rx_filter_3_final_3_2,N_fft_3)/sqrt(N_fft_3);
data_rx_3_symbol_f_real = ((real(data_rx_3_symbol_3_f(M_3_min:M_3_max,:))>0).*2-1)==repmat(M_3_seq,1,N_symbol_3/Time_3);
ErrorSample_3(i) = (numel(data_rx_3_symbol_f_real)-sum(sum(data_rx_3_symbol_f_real)))/numel(data_rx_3_symbol_f_real);
fprintf('Ber3 = %.6f\n',ErrorSample_3(i));
end
%% BER曲线
figure;
plot(snrdB,ErrorSample_1,'-sb',snrdB,ErrorSample_2,'-*b',snrdB,ErrorSample_3,'-ob');
title('\fontname{宋体}误码率曲线');
grid on;
xlim([-10,10]);
legend('\fontname{times new roman}F-OFDM \fontname{宋体}子带\fontname{times new roman}1','\fontname{times new roman}F-OFDM \fontname{宋体}子带\fontname{times new roman}2','\fontname{times new roman}F-OFDM \fontname{宋体}子带\fontname{times new roman}3');
xlabel('\fontname{times new roman}SNR/dB');ylabel('\fontname{times new roman}BER');
set(gca,'xtick',snrdB);
  • M_1
function Hd = M_1
%M_1 Returns a discrete-time filter object.% MATLAB Code
% Generated by MATLAB(R) 9.7 and Signal Processing Toolbox 8.3.
% Generated on: 23-Jul-2020 20:08:56% FIR Window Bandpass filter designed using the FIR1 function.% All frequency values are in kHz.
Fs = 30720;  % Sampling FrequencyFstop1 = 1350;              % First Stopband Frequency
Fpass1 = 1440;              % First Passband Frequency
Fpass2 = 2160;              % Second Passband Frequency
Fstop2 = 2250;              % Second Stopband Frequency
Dstop1 = 0.00031622776602;  % First Stopband Attenuation
Dpass  = 0.057501127785;    % Passband Ripple
Dstop2 = 0.00031622776602;  % Second Stopband Attenuation
flag   = 'scale';           % Sampling Flag% Calculate the order from the parameters using KAISERORD.
[N,Wn,BETA,TYPE] = kaiserord([Fstop1 Fpass1 Fpass2 Fstop2]/(Fs/2), [0 ...1 0], [Dstop1 Dpass Dstop2]);% Calculate the coefficients using the FIR1 function.
b  = fir1(N, Wn, TYPE, kaiser(N+1, BETA), flag);
Hd = dfilt.dffir(b);% [EOF]
  • M_2
function Hd = M_2
%M_2 Returns a discrete-time filter object.% MATLAB Code
% Generated by MATLAB(R) 9.7 and Signal Processing Toolbox 8.3.
% Generated on: 23-Jul-2020 20:10:59% FIR Window Bandpass filter designed using the FIR1 function.% All frequency values are in kHz.
Fs = 30720;  % Sampling FrequencyN    = 1366;     % Order
Fc1  = 2205;     % First Cutoff Frequency
Fc2  = 3015;     % Second Cutoff Frequency
flag = 'scale';  % Sampling Flag
% Create the window vector for the design algorithm.
win = hann(N+1);% Calculate the coefficients using the FIR1 function.
b  = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);
Hd = dfilt.dffir(b);% [EOF]
  • M_3
function Hd = M_3
%M_3.M Returns a discrete-time filter object.% MATLAB Code
% Generated by MATLAB(R) 9.7 and Signal Processing Toolbox 8.3.
% Generated on: 23-Jul-2020 20:01:09% FIR Window Bandpass filter designed using the FIR1 function.% All frequency values are in kHz.
Fs = 30720;  % Sampling FrequencyN    = 4096;     % Order
Fc1  = 3015;     % First Cutoff Frequency
Fc2  = 3825;     % Second Cutoff Frequency
flag = 'scale';  % Sampling Flag
% Create the window vector for the design algorithm.
win = blackmanharris(N+1);% Calculate the coefficients using the FIR1 function.
b  = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);
Hd = dfilt.dffir(b);% [EOF]

微信公众号:通信随笔XIDIAN

F-OFDM 系统简单Matlab搭建相关推荐

  1. ofdm系统matlab仿真论文,基于MATLAB的OFDM仿真(SIMULINK仿真)

    中 文 摘 要 正交频分复用(OFDM)是一种多载波宽带数字调制技术.相比一般的数字通信系统,它具有频带利用率高和抗多径干扰能力强等优点,因而适合于高速率的无线通信系统.正交频分复用 OFDM 是第四 ...

  2. 【OFDM通信】基于matlab深度学习OFDM系统信号检测【含Matlab源码 2023期】

    ⛄一.深度学习OFDM系统信号检测简介 1 OFDM系统模型 OFDM系统是一种常用的多载波调制方式, 因为其具有能够在带宽较窄的情况下传输大量数据.能够对抗频率选择性衰落.传输速率高.实现简单.信道 ...

  3. 基于MATLAB的OFDM系统实现

    基于MATLAB的OFDM系统实现 OFDM(正交频分复用)的基本原理是将高速的数据流通过串并转换分解成若干低速的数据流,利用多个正交的子载波并行传输.本文借鉴了IEEE802.11a标准并进行简化, ...

  4. 粗同步 符号同步 matlab,OFDM系统在衰落信道中帧同步算法研究(毕业论文)

    <OFDM系统在衰落信道中帧同步算法研究(毕业论文)>由会员分享,可在线阅读,更多相关<OFDM系统在衰落信道中帧同步算法研究(毕业论文)(5页珍藏版)>请在人人文库网上搜索. ...

  5. 基于PAM调制的OFDM系统架构之讯号特点分析(matlab)

    基于PAM调制的OFDM系统架构之讯号特点分析(matlab) 不同于基于QAM调制的OFDM系统,通过脉冲振幅调制(PAM)并经过埃尔米特对称处理的讯号本身的特性.讯号调制方面,采用PAM调制的讯号 ...

  6. m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 随着当代无线通信事业的迅猛发展,无线频谱资源已显得越来越匮乏,传统固定静态的无线频谱分配模式 ...

  7. matlab设计倒频系统,OFDM技术仿真(MATLAB代码)

    第一章 绪论 1.1简述 OFDM是一种特殊的多载波传输方案,它可以被看作是一种调制技术,也可以被当作一种复用技术.多载波传输把数据流分解成若干子比特流,这样每个子数据流将具有低得多的比特速率,用这样 ...

  8. OFDM系统同步技术的matlab仿真,包括符号定时同步,采样钟同步,频偏估计

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在单载波系统中,载波频率的偏移只会对接收信号造成一定的幅度衰减和相位旋转,这可以通过均衡等方法来加以 ...

  9. ofdm系统matlab仿真论文,OFDM通信系统分析及其Simulink仿真

    一.课题综述及研究意义 当前,随着Internet商用化所带动的视频.音频及数字通信技术的发展,人们对无线通信寄予了更高的希望.无线移动通信作为通信行业的新兴领域正在进行着日新月异的发展,寻求一种大容 ...

最新文章

  1. c++软件开发面试旋极面试题_经典软件开发面试题:浏览器中输入一个网址后发生了什么?...
  2. “重”磅!人造物质量首超全球生物量
  3. ubuntu c++检测usb口事件变化_从MacBook支持USB-C口充电看电脑标配充电器发展史
  4. Oracle Open World 2012信息汇总贴
  5. mplayer-php,jQuery MPlayer网站音乐播放器插件
  6. 初识C++之运算符重载
  7. 排序数字英文字母交错,由小到大
  8. Yii-模型- criteria查找数据库方法
  9. IDEA中新建ehcache.xml文件报错
  10. python抓取直播源 并更新_虎牙直播源Python爬虫
  11. 炫酷网站模板,css,html
  12. 关于微信公众号运营你要知道的24件小事
  13. 搜狗浏览器怎么翻译英文网页
  14. SSM——SpringMVC笔记1
  15. android 进程通信
  16. Quality Trimming Via Trimmomatic
  17. Oracle审计与数据库防火墙(AVDF)介绍
  18. 技术文档写作风格指南
  19. 微处理器常见问题及解答
  20. 神舟战神Z8D6笔记本电脑蓝屏了怎么处理?

热门文章

  1. 第六章 TCP/IP-网络传输硬件设备
  2. 计算机网络(四)——媒体访问控制
  3. 浅说Mathworks的算法开发解决方案和MBD
  4. linux如何进u盘 命令,如何在linux下使用u盘
  5. 常规的数据可视化大屏模板分享
  6. Tensorflow2.1入门 第六章:循环神经网络
  7. 【实拍】YASA高密度电机技术分析
  8. [面试] 百度笔经加面经 实例
  9. 阅读真题 | 真题阅读 做题记录 一
  10. OSChina 周三乱弹 —— 我就是太阳拳的传承者,光之魔法师