基于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电子书和数学建模资料


相关文章
|
3月前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
3月前
|
供应链 算法 新能源
高比例可再生能源电力系统的调峰成本量化与分摊模型(Matlab代码实现)
高比例可再生能源电力系统的调峰成本量化与分摊模型(Matlab代码实现)
|
3月前
|
数据采集 算法 安全
多接地配电系统的基于PMU的系统状态估计(Matlab代码实现)
多接地配电系统的基于PMU的系统状态估计(Matlab代码实现)
152 0
|
3月前
|
安全 调度
【火电机组、风能、储能】高比例风电电力系统储能运行及配置分析(Matlab代码实现)
【火电机组、风能、储能】高比例风电电力系统储能运行及配置分析(Matlab代码实现)
|
2月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
144 8
|
3月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
235 14
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
214 2
|
2月前
|
传感器 机器学习/深度学习 算法
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
164 0
|
3月前
|
监控
基于MATLAB/Simulink的单机带负荷仿真系统搭建
使用MATLAB/Simulink平台搭建一个单机带负荷的电力系统仿真模型。该系统包括同步发电机、励磁系统、调速系统、变压器、输电线路以及不同类型的负荷模型。
459 5
|
3月前
|
算法 安全
【含储能及sop的多时段配网优化模型】基于柔性开断点(Soft Open Point)的主动配电网电压与无功功率协调控制方法研究(Matlab代码实现)
【含储能及sop的多时段配网优化模型】基于柔性开断点(Soft Open Point)的主动配电网电压与无功功率协调控制方法研究(Matlab代码实现)
111 8

热门文章

最新文章