資源簡介
OFDM仿真中采用循環碼(論文附錄)、漢明碼(m文件中)兩種編碼方式,采用QPSK調制解調,高斯信道,包含仿真的各種結果圖,代碼中包含注釋,峰均比抑制方式采用限幅法的一種(中頻噪聲成形),壓縮包中為完整的m文件和論文

代碼片段和文件信息
clear?all;?clc;?close?all;
carrier=52;
numb_ifft=100;
numb_cp=25;
symb_ofdm=6;
bit_symb=2;
snr=15;
symbol_rate=250000;
bit_rate=symbol_rate.*bit_symb;
sum_bit=carrier*symb_ofdm*bit_symb;
MAX_SYMBOLS=?6;
ITERATE_NUM=2
PAPR_Orignal?=?zeros(1MAX_SYMBOLS);?%%記錄每個OFDM符號的PAPR,原始的
PAPR_NS?=?zeros(ITERATE_NUMMAX_SYMBOLS);?%經過NS算法的
for?nSymbol=1:MAX_SYMBOLS
signal=rand(1sum_bit)<0.5;
figure(1)
subplot(211)
plot(signal)
xlabel(‘time‘)
ylabel(‘amplitude‘)
grid?on????????%********完成待傳數據*******
%%%%%循環碼信源編碼
m?=?3;?????????????????????????????????????
n?=?2^m-1;?????????????????????????????????%定義碼長
k?=?n-m;???????????????????????????????????%信息位長
p=cyclpoly(nk)??????????????????????????????%循環碼生成多項式,n=7,k=4
code?=?encode(signalnk‘cyclic‘p);???????????????%編碼函數,對信號進行差錯編碼
signal_p=reshape(code9112);%*****實現串并轉換**
for?k=1:carrier+39
????for?n=1:bit_symb*symb_ofdm/2
????????imp=signal_p(k2*n);
????????rlp=signal_p(k2*n-1);
????????if(imp==0)&&(rlp==0)
????????????d(kn)=exp(i*5*pi/4);
????????end
????????if(rlp==0)&&(imp==1)
????????????d(kn)=exp(i*3*pi/4);
????????end
????????if(rlp==1)&&(imp==0)
????????????d(kn)=exp(i*7*pi/4);
????????end
????????if(rlp==1)&&(imp==1)
????????????d(kn)=exp(i*pi/4);
????????end
????end
end
sci=real(d);
scq=imag(d);
figure(2)
for?m=1:bit_symb*symb_ofdm/2
????scatter(sci(:m)scq(:m)‘r‘)
????hold?on
????grid?on????%****完成QPSK調制****
end
QPSKdata=reshape(d1546);
%?降低峰均比
K??=?length(QPSKdata);???????????????????????????????????????????????????????????????????%?SIZE?OF?OFDM?Symbol
IF?=?2;?????????????????????????????????????????????????????????????????????%?Interpolation?factor?(Oversampling?factor)
Nf??=?K*IF;
CR=4;
???????????%?SIZE?OF?FFT
ITERATE_NUM?=?2;?%限幅次數
Index?=?randi(length(QPSKdata)-11K)+1;?%隨機生成QPSK的相位的序號,比如1表示12表示-1,3表示j
X?=QPSKdata(Index(1:));?%原始信號的相位(頻域)
XX?=?[X(1:K/2)?zeros(1Nf-K)?X(K/2+1:K)];?
x?=?ifft(XX[]2);?%?時域的信號xk
Signal_Power?=?abs(x.^2);?%計算信號功率
Peak_Power?=?max(Signal_Power[]2);?%求最大功率
Mean_Power?=?mean(Signal_Power2);?%求平均功率
PAPR_Orignal(nSymbol)?=?10*log10(Peak_Power./Mean_Power);?%信號的PAPR
for?nIter=1:ITERATE_NUM?
%?限幅
x_orig=x;%延遲匹配原始信號
x_tmp?=?x(Signal_Power>CR*Mean_Power);?%削波限幅
x_tmp?=?sqrt(CR*Mean_Power)*x_tmp./abs(x_tmp);?
x(Signal_Power>CR*Mean_Power)?=?x_tmp;?
nois=x_orig-x;%匹配延時減去一次限幅,噪聲信號
%?>?噪聲程序濾波器
XX?=?fft(nois[]2);?
XX(K/2+(1:Nf-K))?=?zeros(1Nf-K);?%濾波
noise_filter?=?ifft(XX[]2);?
x=x_orig-noise_filter?;%從原始信號中,消去限幅信號
%?計算NS算法后的PAPR
dout=[x(1:K/2)??x(K/2+K+1:2*K)]
Signal_Power?=?abs(x.^2);?
Peak_Power?=?max(Signal_Power[]2);?
Mean_Power?=?mean(Signal_Power2);?
PAPR_NS(nIternSymbol)?=?10*log10(Peak_Power./Mean_Power);?
end
houd=reshape(dout916);
ifft_signal=ifft(houdnumb_ifft);
ifft_rlsig=real(ifft_signal);
ifft_imsig=imag(ifft_signal);
ifft_signal_con=ifft_signal‘;
figure(3)
for?f=1:symb_ofdm
????subplot(23f)
????plot(0:numb_ifft
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????737151??2018-11-08?12:07??移動通信課設.docx
?????文件????????6483??2018-11-05?20:32??Uzaoshengchengxing.m
評論
共有 條評論