📄 ofdm.m
字号:
%==========================================================================
% 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
%==========================================================================
N = 256;
M = 64;
numOfZeros = N/4+1;
GI = 1/4;
BW = 20;
numOfSym = 100;
satLevel = 5;
%==========================================================================
% Main Program
%==========================================================================
txData = randint(N-numOfZeros,numOfSym,M);
txDataMod = qammod(txData,M);
txDataZpad = [txDataMod((N-numOfZeros+1)/2:end,:);...
zeros(numOfZeros,numOfSym);...
txDataMod(1:(N-numOfZeros+1)/2-1,:)];
txDataZpadIfft = sqrt(N)*ifft(txDataZpad,N);
txDataZpadIfftGI = [txDataZpadIfft((1-GI)*N+1:end,:);txDataZpadIfft];
txDataZpadIfftGIAbs = abs(txDataZpadIfftGI);
txDataZpadIfftGIAbsStd = mean(std(txDataZpadIfftGIAbs));
txDataZpadIfftGIAbsMean = mean(mean(txDataZpadIfftGIAbs));
txDataZpadIfftGIAng = angle(txDataZpadIfftGI);
txDataZpadIfftGIAbsHPA = txDataZpadIfftGIAbs ./...
sqrt(1+(txDataZpadIfftGIAbs/(txDataZpadIfftGIAbsMean*10^(satLevel/10))).^2);
txDataZpadIfftGIAngHPA = txDataZpadIfftGIAng;
txDataZpadIfftGIAbsHPAmean = mean(mean(txDataZpadIfftGIAbsHPA));
txDataZpadIfftGIAbsHPAStd = mean(std(txDataZpadIfftGIAbsHPA));
txDataZpadIfftGIHPA = txDataZpadIfftGIAbsHPA.* ...
exp(sqrt(-1) * txDataZpadIfftGIAngHPA);
rxDataZpadIfftHPA = txDataZpadIfftGIHPA(GI*N+1 : N+GI*N,:);
rxDataZpadHPA = 1/sqrt(N)*fft(rxDataZpadIfftHPA,N);
rxDataModHPA = [rxDataZpadHPA((N-(N-numOfZeros-1)/2+1):N,:);...
rxDataZpadHPA(1:(N-numOfZeros+1)/2,:)];
rxDataHPA = qamdemod(rxDataModHPA/mean(std(rxDataModHPA))*mean(std(txDataMod)),M);
%==========================================================================
% statistical computation
%==========================================================================
MER = 10*log10(mean(var(rxDataModHPA./mean(std(rxDataModHPA))...
- txDataMod./mean(std(txDataMod)))));
[num BER] = symerr(rxDataHPA,txData);
%==========================================================================
% graphical observation
%==========================================================================
f1 = figure(1);
set(f1,'color',[1 1 1]);
subplot(2,2,1);
spectrumFftSize = 2*N;
txSpec = 20*log10(mean(abs(fft(txDataZpadIfftGI(:,:)./ ...
mean(std(txDataZpadIfftGI)),spectrumFftSize)),2));
HpaSpec = 20*log10(mean(abs(fft(txDataZpadIfftGIHPA(:,:)./ ...
mean(std(txDataZpadIfftGIHPA)),spectrumFftSize)),2));
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)
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']);
set(subplotHandel,'Xcolor',[1 1 1]);
set(subplotHandel,'Ycolor',[1 1 1]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -