91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 10KB
    文件類型: .m
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-16
  • 語言: Matlab
  • 標簽:

資源簡介

采用基于梳狀導頻的信道估計,并且采用QPSK調制。IFFT和FFT的點數為128,子載波個數為100,每符號上的比特數為2,每楨的OFDM符號數為12,導頻之間的間隔為7,保護間隔長度為8,每比特信噪比為16,信噪比間隔為2。信道模型為帶多普勒頻移的瑞利衰落信道。多普勒頻移為100,多徑數為3,采樣周期T=1。

資源截圖

代碼片段和文件信息

%%%%OFDM?Channel?Estimation?based?on?Comb?Pilot
%IFFT_bin_length:?IFFT和FFT的點數
%carrier_count:?子載波個數
%bits_per_symbol:?每符號上的比特數
%symbols_per_carrier:?每楨的OFDM符號數
%X:欲發送的二進制比特流

clear?all;
clc;
IFFT_bin_length=128;
carrier_count=100;
bits_per_symbol=2;
symbols_per_carrier=12;
LI=7?;?%導頻之間的間隔
Np=ceil(carrier_count/LI)+1;%導頻數?%加1的原因:使最后一列也是導頻??ceil()為向正無窮方向取整

N_number=carrier_count*symbols_per_carrier*bits_per_symbol;
carriers=1:carrier_count+Np;

GI=8;?????????????%?guard?interval?length???%%保護間隔長度
N_snr=16;??????????%?每比特信噪比
snr=2;?????????????%信噪比間隔
%------------------------------------------------------------
%?vector?initialization


X=zeros(1N_number);X1=[];X2=[];X3=[];X4=[];X5=[];X6=[];X7=[];
Y1=[];Y2=[];Y3=[];Y4=[];Y5=[];Y6=[];Y7=[];
XX=zeros(1N_number);
dif_bit=zeros(1N_number);
dif_bit1=zeros(1N_number);
dif_bit2=zeros(1N_number);
dif_bit3=zeros(1N_number);
X=randint(1N_number);%產生二進制隨機序列(非0即1)
%--------------------------------------------------------
%QPSK調制:(1?1)->pi/4;(0?1)->3*pi/4;(0?0)->-3*pi/4;(10)->-pi/4;

s=(X.*2-1)/sqrt(2);
sreal=s(1:2:N_number);?%%%s序列中奇數元素做實部
simage=s(2:2:N_number);?%%%s序列中偶數元素做虛部
X1=sreal+j.*simage;??%%%QPSK已調信號
%%scatterplot(X1)??%%畫出QPSK調制后的信號星座圖

%---------------------------------------------------------
%產生隨機導頻信號
%--------------------------------------------------------
train_sym=randint(12*symbols_per_carrier);?%%%產生了24個01隨即序列:train_sym
t=(train_sym.*2-1)/sqrt(2);?%%對該序列進行QPSK調制
treal=t(1:2:2*symbols_per_carrier);??
timage=t(2:2:2*symbols_per_carrier);?
training_symbols1=treal+j.*timage;
training_symbols2=training_symbols1.‘;???%%%?‘?為取共軛轉置??.‘為取轉置
training_symbols=repmat(training_symbols21Np);???%%%?repmat()為填充函數?training_symbols現在是被填充成12行16列

pilot=1:LI+1:carrier_count+Np;???%%以LI+1為間隔!!
if?length(pilot)~=Np??%%%length(pilot)是15Np是16,確實不等啊
????pilot=[pilotcarrier_count+Np];??%%不等所以就給它補上一個
end
%--------------------------------------------------------
%串并轉換
X2=reshape(X1carrier_countsymbols_per_carrier).‘;??%%%把QPSK已調信號X1變成12行100列,相當于給100個子載波
%---------------------------------------------------------
%插入導頻
signal=1:carrier_count+Np;
signal(pilot)=[];???%%%前面pilot已經被設置成等于Np個即16個了?所以刪除16個后signal長度等于100個
X3(:pilot)=training_symbols;??%%%X3變成12行?116列其中僅pilot對應的列不為0
X3(:signal)=X2;??%%%%%%%??X3變成12行?116列?其中pilot對應的列是training_symbols?其他100列是串并變換后的信號X2
%X3=cat(1training_symbolsX2);
IFFT_modulation=zeros(symbols_per_carrierIFFT_bin_length);?%%初始化IFFT_modulation?12行?128列
IFFT_modulation(:carriers)=X3;??%%%IFFT_modulation的前116列被賦值成X3?后面12列依舊為全0
%IFFT_modulation(:conjugate_carriers)=conj(X3);
X4=ifft(IFFT_modulationIFFT_bin_length2);?%%%%??X4為12行?128列

%X5=X4.‘;
%加保護間隔(循環前綴)
for?k=1:symbols_per_carrier;????%%%結果是把X4的121至128列變成X6的1至8列,X4的1至128列變成X6的9至136列?現在X6是12行?136列
???for?i=1:IFFT_bin_length;
??????X6(ki+GI)=X4(ki);
???end
???for?i=1:GI;
??????X6(ki)=X4(ki+IFFT_bin_length-GI);???
???end
end
%-------------

評論

共有 條評論