日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

qpsk调制matlab仿真,QPSK调制解调仿真

發布時間:2023/12/10 循环神经网络 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qpsk调制matlab仿真,QPSK调制解调仿真 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%主函數

clear;

clc;

SNR=10;? ?? ?? ?? ?? ?? ???% 信噪比

fl=?;? ?? ?? ?? ?? ?? ?? ???% 設置FFT長度

Ns=2;? ?? ?? ?? ?? ?? ?? ???%設置一個幀結構中OFDM信號的個數

para=?;? ?? ?? ?? ?? ?? ?? ?%設置并行傳輸的子載波個數

sr=250000;? ?? ?? ?? ?? ?? ? %符號速率

br=sr.*2;? ?? ?? ?? ?? ?? ?? ?% 每個子載波的比特率

gl=8? ?? ?? ?? ?? ?? ?? ?? ? %保護時隙的長度

nloop=1 ;? ?? ?? ?? ?? ?? ?? ?%仿真循環次數

noe=0;? ?? ?? ?? ?? ?? ?? ???%誤碼率

nod=0;? ?? ?? ?? ?? ?? ?? ???%傳輸的數據數量

eop=0;? ?? ?? ?? ?? ?? ?? ???%誤組數

nop=0;? ?? ?? ?? ?? ?? ?? ???%傳輸的分組數

for iii=1:nloop;

%-------------產生數據------------

Signal=rand(1,para.*Ns.*??)>0.5

%產生0,1隨機序列,符號數為para*Ns*2,Signal實際得到的是右邊邏輯表達式的結果

%------------串并轉換---------

paradata=reshape(Signal,para,Ns.* ??)

%變換方式:前32bit為第一列,隨后的32bit變為第二列,以類推

%------------QPSK調制--------

[ich,qch]=qpskmod(paradata,para,Ns, ??)

kmod=1./sqrt(2);

ich1=ich.*kmod;

qch1=qch.*kmod;

qpsk_x=ich1+qch1.*sqrt(-1)

%頻域數據變時域

%---------------IFFT------------

fy=ifft(qpsk_x)

ich2=real(fy)

qch2=imag(fy)

%--------------插入保護間隔------------

ich3=[ich2(fl-gl+1:fl,:);ich2]

qch3=[qch2(fl-gl+1:fl,:);qch2]

%--------------計算衰減--------------

spow=sum(ich3.^2+qch3.^2)/Ns./para;

attn= 0.5.*spow.*sr/br.*10.^(-SNR./10);

attn=sqrt(attn);

%并串轉換

ich4=reshape(ich3,1,(fl+gl) .*Ns)

qch4=reshape(qch3,1,(fl+gl) .*Ns)

%形成復數發射數據

TrData=ich4+qch4.*sqrt(-1)

%接收機

%----------加入高斯白噪聲-----------

ReData=awgn(TrData,SNR,'measured')

%接收端

%移去保護間隔

idata=real(ReData);

qdata=imag(ReData);

idata1=reshape(idata,fl+gl,Ns);

qdata1=reshape(qdata,fl+gl,Ns);

idata2=idata1(gl+1:gl+fl,:);

qdata2=qdata1(gl+1:gl+fl,:);

%FFT

Rex=idata2+qdata2.*sqrt(-1);

ry=fft(Rex);

ReIChan=real(ry);

ReQChan=imag(ry);

ReIchan=ReIChan/kmod;

ReQchan=ReQChan/kmod;

%QPSK解調

RePara=qpskdemod(ReIchan,ReQchan,para,Ns,??)

%接收端信號

ReSig=reshape(RePara,1,para.*Ns.* ??);

%-----------誤碼比特率(BER)------

% ------即時的誤碼和數據---------

noe2=sum(abs(ReSig-Signal));? ?? ?%將接收解調后的信號與原始信號相比較,累計不一樣的

nod2=length(Signal);? ?? ?? ?? ?? ? %發送信號的總長度

%累計誤碼組數和總的數據

noe=noe+noe2;

%因為進行了nloop次的循環,所以把每次循環的數據和誤碼組數累積起來

nod=nod+nod2;

%計算誤組率(PER)(每次循環作為一個分組)

if noe2 ~=0

eop=eop+1;

else

eop=eop;

end

eop;

nop=nop+1;

fprintf('%d\t%e\t%d\n',iii,noe2/nod2,eop);%屏幕顯示

end

%----------輸出結構------------

per=eop/nop;%總的誤組數

ber=noe/nod; %總的誤碼率

figure(1)? ?? ?? ?? ?? ?? ???%發送信號與接收信號的圖形

subplot(2,1,1),stem(Signal),grid minor;

title('signal');

xlabel('x'),ylabel('y');

subplot(2,1,2),stem(ReSig),grid minor;

title('Resignal')

figure(2)

subplot(2,1,1),stem(ich2),grid minor;

xlabel('x'),ylabel('y');

title('ifft變換之后的I路波形')

subplot(2,1,2),stem(qch2),grid minor;

xlabel('x'),ylabel('y');

title('ifft變換之后的Q路波形')? ???%加入噪聲后的I、Q路的幅度波形

figure(3)

subplot(2,1,1),stem(idata),grid minor;

xlabel('時間'),ylabel('幅度');

title('加噪聲后I路波形')

subplot(2,1,2),stem(qdata),grid minor;

xlabel('時間'),ylabel('幅度');

title('加噪聲后的Q路波形')

figure(4)

subplot(2,1,1),stem(ReIChan),grid minor ;

title('fft變換之后的I路波形')

subplot(2,1,2),stem(ReQChan),grid minor;

title('fft變換之后的Q路波形')

xlabel('x'),ylabel('y');

figure(5)

subplot(2,1,1),stem(TrData);

title('未加入噪聲時候的波形')

subplot(2,1,2),stem(ReData);

title('加入噪聲后的波形')

xlabel('x'),ylabel('y');

%QPSK星座圖

figure(6)

for alfa=0:0.001.*pi:2.*pi

plot(cos(alfa),sin(alfa),'g')

hold on

end

for i=1:Ns.*para

plot(ich1(i),qch1(i),'ro');

hold on

end

grid;

xlabel('I路');

ylabel('Q路');

title('調制后信號的星座圖');

hold off

figure(7)

plot(abs(fy));

title('ifft運算結果的波形');? ?? ?? ? %IFFT運算結果的波形

figure(8)

plot(abs(ry));

title('fft運算結果的波形');? ?? ?? ? %FFT運算結果的波形

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%qpskmod.m

function [iout,qout]=qpskmod(paradata,para,nd,ml)

%****************** variables *************************

% nd : Number of data

% ml : Number of modulation levels

% (QPSK ->2??16QAM -> 4)

% *****************************************************

m2=ml./2;

paradata2=paradata.*2-1;

count2=0;

for jj=1:nd

isi = zeros(para,1);

isq = zeros(para,1);

for ii = 1 : m2

isi = isi + 2.^( m2 - ii ) .* paradata2((1:para),ii+count2);

isq = isq + 2.^ ( m2 - ii ) .* paradata2((1:para),m2+ii+count2);

end

iout((1:para),jj)=isi;

qout((1:para),jj)=isq;

count2=count2+ml;

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%qpskdemod.m

function [demodata]=qpskdemod(idata,qdata,para,nd,ml)

demodata=zeros( para,ml*nd );

demodata((1:para),(1:ml:ml*nd-1))=idata((1:para),(1:nd))>=0;

demodata((1:para),(2:ml:ml*nd))=qdata((1:para),(1:nd))>=0;

總結

以上是生活随笔為你收集整理的qpsk调制matlab仿真,QPSK调制解调仿真的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。