基于Matlab实现OFDM系统高功率放大器效应

简介: 基于Matlab实现OFDM系统高功率放大器效应

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

交频分复用(OFDM)是一种多载波宽带数字调制技术,它具有频带利用率高和抗多径干扰能力强等优点,因而适合于高速率的无线通信系统.分析了OFDM技术的实现原理,用MATLAB软件对OFDM的传输性能进行了仿真模拟并对结论进行了分析.

⛄ 完整代码

%==========================================================================

% The mfile investigates the effects of high power amplifier on the ofdam

% signals. The effects on spectrum ang Modulation Error Rate (MER) is of

% more concern.

%

% Written By     : Hamid Ramezani

% Date           : 17-Jun-2007

% Code version   : 1

% Matlab Version : 7.4.0.287 (R2007a)

%==========================================================================


% Initialization

   clear all;

   close all;

   clc;

   

%==========================================================================

% Setting Parameters

%==========================================================================

   % OFDM System Parameters

   N           = 256;      % length of OFDM IFFT (16,32,64,...,2^n)

   M           = 64;       % number of QAM constellation points (4,16,64,256)

   numOfZeros  = N/4+1;    % numOfZeros must be an odd number and lower

                           % than N. The zero padding operation is

                           % necessarry in practical implementations.

   GI          = 1/4;      % Guard Interval (1/4,1/8,1/16,...,4/N)

   BW          = 20;       % OFDM signal Band width in MHz

   numOfSym    = 100;      % number of OFDM Symbols

   

   % Amplifire Parameters

   satLevel = 5;   % in dB , higher than the tx out mean of voltage

   

%==========================================================================

%   Main Program

%==========================================================================

   txData     = randint(N-numOfZeros,numOfSym,M);  % data generation

   

   % QAM modulation

   txDataMod  = qammod(txData,M);

   

   % zeros padding

   txDataZpad = [txDataMod((N-numOfZeros+1)/2:end,:);...

                 zeros(numOfZeros,numOfSym);...

                 txDataMod(1:(N-numOfZeros+1)/2+1,:)];

       % Note : in practice zero padding operation must be followed by

       % a standard. Usually the last part of data frame shifts to the first

       % part of zero padded frame.

       

  % IFFT

   txDataZpadIfft = sqrt(N)*ifft(txDataZpad,N);

 

   % Guard Interval Insertion

   txDataZpadIfftGI    = [txDataZpadIfft((1-GI)*N+1:end,:);txDataZpadIfft];

   

   % Amplifier Model

   txDataZpadIfftGIAbs     = abs(txDataZpadIfftGI);            % tx data amplitude


   % tx data amplitude standard deviation and mean

   txDataZpadIfftGIAbsStd  = mean(std(txDataZpadIfftGIAbs));  

   txDataZpadIfftGIAbsMean = mean(mean(txDataZpadIfftGIAbs));

   

   % tx data phase in radian

   txDataZpadIfftGIAng     = angle(txDataZpadIfftGI);

   

   % It is imagined that the amplifier has no effect on the phase of the

   % signal. The solid state amplifier effects on signal phase is about 5

   % degrees. The amplifier AM/AM response is followed by x/sqrt(1+(x/k)^2)

   txDataZpadIfftGIAbsHPA = txDataZpadIfftGIAbs ./...

          sqrt(1+(txDataZpadIfftGIAbs/(txDataZpadIfftGIAbsMean*10^(satLevel/10))).^2);

   % no change in the phase

   txDataZpadIfftGIAngHPA = txDataZpadIfftGIAng;

   

   % mean of amplitude after amplification

   txDataZpadIfftGIAbsHPAmean = mean(mean(txDataZpadIfftGIAbsHPA));

   % standard deviation after amplification

   txDataZpadIfftGIAbsHPAStd  = mean(std(txDataZpadIfftGIAbsHPA));

   


   % polar to cartesian conversion

   txDataZpadIfftGIHPA    = txDataZpadIfftGIAbsHPA.* ...

                           exp(sqrt(-1) * txDataZpadIfftGIAngHPA);                            


   % receiver part

   % Guard Interval removal

   rxDataZpadIfftHPA  = txDataZpadIfftGIHPA(GI*N+1 : N+GI*N,:);

   % FFT operation

   rxDataZpadHPA      = 1/sqrt(N)*fft(rxDataZpadIfftHPA,N);

   % zero removal and rearrangement

   rxDataModHPA       = [rxDataZpadHPA((N-(N-numOfZeros-1)/2+1):N,:);...

                         rxDataZpadHPA(1:(N-numOfZeros+1)/2,:)];

   % demodulation

   rxDataHPA          = qamdemod(rxDataModHPA/mean(std(rxDataModHPA))*mean(std(txDataMod)),M);

   

%==========================================================================

%       statistical computation

%==========================================================================

   % Mean Error Rate computation

   MER       = 10*log10(mean(var(rxDataModHPA./mean(std(rxDataModHPA))...

                - txDataMod./mean(std(txDataMod)))));

   % Bit Error Rate computation

   [num BER] = symerr(rxDataHPA,txData);

%==========================================================================

% graphical observation

%==========================================================================

  f1 = figure(1);    

  set(f1,'color',[1 1 1]);

       subplot(2,2,1);

           

           spectrumFftSize = 2*N;

           % spectrum of signal befor High Power Amplifier

           txSpec  = 20*log10(mean(abs(fft(txDataZpadIfftGI(:,:)./ ...

                     mean(std(txDataZpadIfftGI)),spectrumFftSize)),2));

           % spectrum of signal after High Power Amplifier

           HpaSpec = 20*log10(mean(abs(fft(txDataZpadIfftGIHPA(:,:)./ ...

                     mean(std(txDataZpadIfftGIHPA)),spectrumFftSize)),2));

           % corresponding frequency

           Freq    = linspace(-BW/2,BW/2,length(txSpec));

           

           plot(Freq,[txSpec(length(txSpec)/2:length(txSpec));...

               txSpec(1:(length(txSpec)/2-1))]);

           hold on

           grid on

           plot(Freq,[HpaSpec(length(txSpec)/2:length(txSpec));...

               HpaSpec(1:(length(txSpec)/2-1))],'r');

           grid on;

           xlabel('representing frequency');

           ylabel('spectrum signals (first symbol)');

           title('Spectrum Effects')

           legend('Befor Amplifier','After Amplifier')


       subplot(2,2,2);

           plot(real(reshape(rxDataModHPA,1,numOfSym*(N-numOfZeros)))/mean(std(rxDataModHPA)),...

                imag(reshape(rxDataModHPA,1,numOfSym*(N-numOfZeros)))/mean(std(rxDataModHPA)),'.r')

           hold on

           plot(real(reshape(txDataMod,1,numOfSym*(N-numOfZeros)))/mean(std(txDataMod)),...

                imag(reshape(txDataMod,1,numOfSym*(N-numOfZeros)))/mean(std(txDataMod)),'.b')

           xlabel('I channel');

           ylabel('Q channel');

           title('signal Constelleations');

           legend('After Amplifier','Before Amplifier');


    subplot(2,2,3)

           % normalize amplitude

           txAmp = linspace(0,5,100);

           amAmp = txAmp./(1+(txAmp/satLevel).^2);

           plot(txAmp,txAmp,'b');

           hold on

           plot(txAmp,amAmp,'r');

           plot(1,1,'om');

           xlabel('Input Amplitude');

           ylabel('Output Amplitude');

           title('AM/AM response of power amplifier');

           legend('Linear Response','Amplifier Response','Mean of OFDM Amplitude');

           

       subplotHandel = subplot(2,2,4);

           text(0,1 ,['Mean Error Rate     : ',num2str(MER),' dB']);

           text(0,.8,['Bit  Error Rate     : ',num2str(BER)]);

           

           text(0,.6,['Modulation          : ',num2str(M),' QAM']);  

           text(0,.4,['IFFT Size           : ',num2str(N),' points']);  

           text(0,.2,['Guard Interval Size : ',num2str(N),' points']);              

           text(0,.0,['Saturation Level    : ',num2str(satLevel),' dB relative to AM Avg']);

           % setting the axes invisibale

           set(subplotHandel,'Xcolor',[1 1 1]);

           set(subplotHandel,'Ycolor',[1 1 1]);

⛄ 运行结果

⛄ 参考文献

[1]孙志雄. 基于MATLAB的OFDM系统仿真分析[J]. 信息技术, 2007, 31(12):4.

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
2月前
|
算法 数据可视化 图形学
网络通信系统的voronoi图显示与能耗分析matlab仿真
在MATLAB2022a中,该程序模拟了两层基站网络,使用泊松分布随机生成Macro和Micro基站,并构建Voronoi图。它计算每个用户的信号强度,选择最强连接,并分析SINR和数据速率。程序还涉及能耗计算,包括传输、接收、处理和空闲能耗的分析。Voronoi图帮助可视化网络连接和优化能源效率。
|
1月前
|
Windows
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
本文通过MATLAB仿真实现了OFDM系统中BPSK、QPSK、4QAM、16QAM和32QAM调制解调过程,并在加性高斯白噪声信道及TDL瑞利衰落信道下计算了不同信噪比条件下的误比特率。
45 4
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
|
3天前
|
算法
基于极大似然算法的系统参数辨识matlab仿真
本程序基于极大似然算法实现系统参数辨识,对参数a1、b1、a2、b2进行估计,并计算估计误差及收敛曲线,对比不同信噪比下的误差表现。在MATLAB2022a版本中运行,展示了参数估计值及其误差曲线。极大似然估计方法通过最大化观测数据的似然函数来估计未知参数,适用于多种系统模型。
|
29天前
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
46 2
|
1月前
|
算法
基于卡尔曼滤波的系统参数辨识matlab仿真
此程序采用卡尔曼滤波技术实现系统参数在线辨识,通过MATLAB 2022a仿真展现参数收敛过程、辨识误差,并比较不同信噪比下系统性能。卡尔曼滤波递归地结合历史估计与当前观测,优化状态估计。参数辨识中,系统参数被视为状态变量,通过迭代预测和更新步骤实现在线估计,有效处理了线性系统中的噪声影响。
|
1月前
|
存储 算法 Serverless
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
|
1月前
|
机器学习/深度学习 监控 算法
基于深度学习网络的人员行为视频检测系统matlab仿真,带GUI界面
本仿真展示了基于GoogLeNet的人员行为检测系统在Matlab 2022a上的实现效果,无水印。GoogLeNet采用创新的Inception模块,高效地提取视频中人员行为特征并进行分类。核心程序循环读取视频帧,每十帧执行一次分类,最终输出最频繁的行为类别如“乐队”、“乒乓球”等。此技术适用于智能监控等多个领域。
53 4
|
1月前
|
算法
基于IEEE802.11g标准的OFDM信号帧检测matlab仿真
此项目旨在应对无线信号识别挑战,利用MATLAB/Simulink开发IEEE 802.11g OFDM信号识别算法。通过对标准的深入研究,设计并计算PLCP前导码数据,采用信号相关性进行信号鉴定。项目构建了完整的发射机模型,在AWGN信道下评估性能。通过生成特定的短训和长训序列,实现帧头检测,并模拟真实信号传输。测试使用MATLAB 2022a版本,展示了信号生成与识别的关键步骤及结果。
|
1月前
|
机器学习/深度学习
基于IEEE30电网系统的停电规模评价系统matlab仿真,对比IEEE118,输出停电规模,潮流分布和负载率等
本课题针对IEEE标准节点系统,通过移除特定线路模拟故障,计算其余线路的有功潮流分布系数及负载率变化。采用MATLAB2022a进行仿真,通过潮流计算确定电网运行状态,并以负载率评估负载能力。IEEE30与IEEE118系统对比显示,前者在故障下易过载,后者则因更好的拓扑结构拥有更高的负载裕度。
|
1月前
|
运维 算法 C++
MATLAB - 系统辨识 - 在线估计 - Online Estimation
MATLAB - 系统辨识 - 在线估计 - Online Estimation
31 0