MATLAB在通信系统仿真中的注意
原文鏈接:(更多文章移步鏈接)
MATLAB在通信系統(tǒng)仿真中的注意 - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/46668425
1.調(diào)用函數(shù)fourier和ifourier之前,需用syms命令對(duì)所用到的變量進(jìn)行說(shuō)明,即將這些變量說(shuō)明成符號(hào)變量。
clear all
syms t;
f=t*exp(-abs(t));
subplot(121);ezplot(f);
F=fourier(f);
subplot(122);ezplot(abs(F));
?
2.采用fourier和ifourier得到的返回函數(shù),仍是符號(hào)表達(dá)式。若作圖,應(yīng)用ezplot而不是plot。若返回函數(shù)有如狄拉克函數(shù)??等。則用ezplot也無(wú)法作圖。
clear all syms t w; F=pi*exp(-abs(w)); subplot(121);ezplot(abs(F)); f=ifourier(F,t);%因?yàn)榉祷厥顷P(guān)于x的函數(shù),所以指定返回t的函數(shù)。 subplot(122);ezplot(f);plot是繪制二維圖形,并且是x,y的表達(dá)式是已知的或者是形如y=f(x)這樣確切的表達(dá)式,而ezplot是畫(huà)出形如f(x,y)=0這種隱函數(shù)圖形。
?
3.嚴(yán)格的說(shuō),只有非周期信號(hào)才有Fourier變換。(不滿足絕對(duì)可積)但若滿足Dirichlet條件,可展開(kāi)為Fourier級(jí)數(shù)。?是k次諧波處的Fourier系數(shù)。??是諧波幅度的概念,??是頻譜密度的概念。
?
4.離散時(shí)間信號(hào)的Fourier變換,兩個(gè)特點(diǎn):
(1)變換是用于無(wú)限長(zhǎng)的序列;
(2)變換的結(jié)果是自變量??的連續(xù)函數(shù)。
*兩個(gè)序列的循環(huán)卷積序列:
clear all h=[6 3 4 2 1 -2];%產(chǎn)生信號(hào)序列 x=[3 2 6 7 -1 -3]; h1=fliplr(h); H=toeplitz(h,[h(1) h1(1:5)]); y=H*x';H=fft(h); X=fft(x); Y=H.*X; y1=ifft(Y);subplot(211);stem(y);title('直接計(jì)算') subplot(212);stem(y1);title('DFT計(jì)算')*DFT對(duì)應(yīng)循環(huán)卷積而不對(duì)應(yīng)線性卷積。若用DFT進(jìn)行線性卷積,需對(duì)兩長(zhǎng)度分別為M,L的序列都擴(kuò)展為長(zhǎng)度為M+L-1的新序列。例子及程序如下:
clear all n1=0:20; n2=0:10; %%直接法 h=sinc(0.2*n1);%兩序列 x=exp(-0.2*n2); y=conv(x,h); %%DFT法 h1=[h zeros(1,length(x)-1)]; x1=[x zeros(1,length(h)-1)]; H1=fft(h1); X1=fft(x1); Y1=H1.*X1; y1=ifft(Y1);subplot(211);stem(y);title('直接計(jì)算') subplot(212);stem(y1);title('DFT計(jì)算')?
5.加性高斯白噪聲(AWGN)表現(xiàn)為信號(hào)圍繞平均值的一種隨機(jī)波動(dòng)過(guò)程。加性高斯白噪聲的均值為0,方差為噪聲功率的大小。一般情況下,噪聲功率越大,信號(hào)的波動(dòng)幅度越大,接收端接收到的信號(hào)的誤比特率就越高。
awgn(x,snr)%把加性高斯白噪聲疊加到輸入信號(hào)中,snr以dB的形式指定噪聲的功率*awgn函數(shù)使用方法:
awgn將白色高斯噪聲添加到信號(hào)中
語(yǔ)法
y = awgn(x,snr)
y = awgn(x,snr,sigpower)
y = awgn(x,snr,'measured')
y = awgn(x,snr,sigpower,state)
y = awgn(x,snr,'measured',state)
y = awgn(...,powertype)
描述
y = awgn(x,snr)將白高斯噪聲添加到向量信號(hào)x中。標(biāo)量snr指定了每一個(gè)采樣點(diǎn)信號(hào)與噪聲的比率,單位為dB。如果x是復(fù)數(shù)的,awgn將會(huì)添加復(fù)數(shù)噪聲。這個(gè)語(yǔ)法假設(shè)x的能量是0dBW。
y = awgn(x,snr,sigpower)和上面的語(yǔ)法相同,除了sigpower是x的能量,單位為dBW。
y = awgn(x,snr,'measured')和y = awgn(x,snr)是相同的,除了agwn在添加噪聲之前測(cè)量了x的能量。
y = awgn(x,snr,sigpower,state)和y = awgn(x,snr,sigpower)是相同的,除了awgn首先重置了正態(tài)隨機(jī)數(shù)產(chǎn)生器randn的狀態(tài)為整數(shù)狀態(tài)。
y = awgn(x,snr,'measured',state)和y = awgn(x,snr,'measured')是相同的,除了awgn首先重置了正態(tài)隨機(jī)數(shù)產(chǎn)生器randn的狀態(tài)為整數(shù)狀態(tài)。
y = awgn(...,powertype)和前面的語(yǔ)法相同,除了字符串powertype指定了snr和sigpower的單位。powertype的選擇有'db' and 'linear',如果powertype是'db',那么snr是按照dB為單位測(cè)量的,sigpower是按照dBW為單位測(cè)量的。如果powertype是線性的,snr是按照一個(gè)比率測(cè)量的,sigpower是以瓦特為單位測(cè)量的。Relationship Among SNR, Es/N0, and Eb/N0
對(duì)于SNR和其他的噪聲相對(duì)能量測(cè)量的關(guān)系,查看Describing the Noise Level of an AWGN Channel。
clear all t=0:0.001:10; x=sin(2*pi*t); snr=20;%噪聲功率為20dBW y0=awgn(x,snr);%將高斯白噪聲疊加到信號(hào)上 y1=awgn(x,snr,10);%y1=awgn(x,snr,sigpower)假設(shè)了輸入信號(hào)功率為sigpower單位dBW y2=awgn(x,snr,'measured');%首先計(jì)算輸入信號(hào)的功率,然后按照snr添加相應(yīng)的高斯白噪聲 subplot(411);plot(t,x);title('正弦信號(hào)x'); subplot(412);plot(t,y0);title('疊加了高斯白噪聲后的正弦信號(hào)0');%若未說(shuō)明輸入信號(hào)功率,則假設(shè)為0dBW subplot(413);plot(t,y1);title('疊加了高斯白噪聲后的正弦信號(hào)1');%因?yàn)檩斎胄盘?hào)實(shí)際功率(輸入函數(shù)是0.5)小于10dBW,圖是根據(jù)給出的輸入信號(hào)功率畫(huà)的 subplot(414);plot(t,y2);title('疊加了高斯白噪聲后的正弦信號(hào)2');%(添加的噪聲功率根據(jù)實(shí)際給出輸入信號(hào)的信號(hào)功率計(jì)算得出)z0=y0-x; var(z0);%均方差?
6.上面的例子太簡(jiǎn)單,下面看這樣一個(gè)例子:
*仿真正交相移鍵控(QPSK)調(diào)制的基帶數(shù)字通信系統(tǒng)通過(guò)AWGN信道的誤符號(hào)率(SER)和誤比特率(BER),假設(shè)發(fā)射端信息比特采用Gray編碼影射,基帶脈沖采用矩形脈沖,仿真時(shí)每個(gè)脈沖的采樣點(diǎn)數(shù)為8,接收端采用匹配濾波器進(jìn)行相干解調(diào)。
代碼如下:
%% % .::::. % .::::::::. % ::::::::::: % ..:::::::::::' % '::::::::::::' % .:::::::::: % '::::::::::::::.. % ..::::::::::::. % ``:::::::::::::::: % ::::``:::::::::' .:::. % ::::' ':::::' .::::::::. % .::::' :::: .:::::::'::::. % .:::' ::::: .:::::::::' ':::::. % .::' :::::.:::::::::' ':::::. % .::' ::::::::::::::' ``::::. % ...::: ::::::::::::' ``::. % ```` ':. ':::::::::' ::::.. % '.:::::' ':'````.. % clear all nSamp=8;%矩形脈沖的采樣點(diǎn)數(shù) numSymb=200000;%每種SNR下傳輸?shù)姆?hào)數(shù) M=4;%QPSK的符號(hào)類型數(shù) SNR=-3:3;%SNR的范圍 grayencod=[0 1 3 2 ];%Gray編碼格式 for ii=1:length(SNR)msg=randsrc(1,numSymb,[0:3]);%產(chǎn)生發(fā)送符號(hào),1行numSymb列0-3的數(shù)。msg_gr=grayencod(msg+1);%進(jìn)行Gray編碼影射(格雷碼)msg_tx=pskmod(msg_gr,M);%QPSK調(diào)制msg_tx=rectpulse(msg_tx,nSamp);%矩形脈沖成型msg_rx=awgn(msg_tx,SNR(ii),'measured');%通過(guò)AWGN信道m(xù)sg_rx_down=intdump(msg_rx,nSamp);%匹配濾波相干解調(diào)msg_gr_demod=pskdemod(msg_rx_down,M);%QPSK解調(diào)[dummy graydecod]=sort(grayencod);graydecod=graydecod-1;msg_demod=graydecod(msg_gr_demod+1);%Gray編碼逆映射[errorBit BER(ii)]=biterr(msg,msg_demod,log2(M));%計(jì)算BER[errorSym SER(ii)]=symerr(msg,msg_demod);%計(jì)算SER end scatterplot(msg_tx(1:100))%畫(huà)出發(fā)射信號(hào)星座圖 title('發(fā)射信號(hào)星座圖') xlabel('同相分量') ylabel('正交分量') scatterplot(msg_rx(1:100))%畫(huà)出接收信號(hào)星座圖 title('接收信號(hào)星座圖') xlabel('同相分量') ylabel('正交分量') figure semilogy(SNR,BER,'-r*',SNR,SER,'-r*')%畫(huà)出BER和SER隨SNR變化的曲線 legend('BER','SER') title('QPSK在AWGN信道下的性能') xlabel('信噪比(dB)') ylabel('誤符號(hào)率和誤比特率')*仿真8-PSK載波調(diào)制信號(hào)在AWGN信道下的誤碼率和誤比特率性能,并與理論值比較。假設(shè)符號(hào)周期為1s,載波頻率為10Hz,每個(gè)符號(hào)周期內(nèi)采樣100個(gè)點(diǎn)。程序如下:
clear all nsymbol=10000; %每種信噪比下的發(fā)送符號(hào)數(shù) T=1; %符號(hào)周期 fs=100; %每個(gè)符號(hào)的采樣點(diǎn)數(shù) ts=1/fs; %采樣時(shí)間間隔 t=0:ts:T-ts; %時(shí)間向量 fc=10; %載波頻率 c=sqrt(2/T)*exp(j*2*pi*fc*t); %載波信號(hào) figure(1),plot(t,c); c1=sqrt(2/T)*cos(2*pi*fc*t); %同相載波 figure(2),plot(t,c1); c2=-sqrt(2/T)*sin(2*pi*fc*t); %正交載波 figure(3),plot(t,c2); M=8; %8-PSK graycode=[0 1 2 3 6 7 4 5]; %Gray編碼規(guī)則 EsN0=0:15; %信噪比, Es/N0 snr1=10.^(EsN0/10); %信噪比轉(zhuǎn)換為線性值,倍數(shù) msg=randint(1,nsymbol,M); %消息數(shù)據(jù) msg1=graycode(msg+1); %Gray映射,將序列msg+1編成格雷碼取出 figure(4),plot(msg,msg1); msgmod=pskmod(msg1,M).'; %基帶 8-PSK調(diào)制 figure(5),scatterplot(msgmod); tx=real(msgmod*c); %載波調(diào)制 tx1=reshape(tx.',1,length(msgmod)*length(c)); % B = reshape(A,m,n) 將矩陣A的元素返回到一個(gè)m×n的矩陣B。 figure(6),plot(tx1); spow=norm(tx1).^2/nsymbol; %求每個(gè)符號(hào)的平均功率,n=norm(A)返回A的最大奇異值,即max(svd(A)) for indx=1:length(EsN0) sigma=sqrt(spow/(2*snr1(indx))); %根據(jù)符號(hào)功率求噪聲功率 rx=tx1+sigma*randn(1,length(tx1)); %加入高斯白噪聲,randn 生成標(biāo)準(zhǔn)正態(tài)分布的偽隨機(jī)數(shù)(均值為0,方差為1) rx1=reshape(rx,length(c),length(msgmod)); r1=(c1*rx1)/length(c1); %相關(guān)運(yùn)算 r2=(c2*rx1)/length(c2); r=r1+j*r2; y=pskdemod(r,M); %PSK解調(diào) decmsg=graycode(y+1); [err,ber(indx)]=biterr(msg,decmsg,log2(M)); %誤比特率,biterr(x,y)是比特的誤碼率,symerr(x,y)是符號(hào)的,在二進(jìn)制時(shí),它兩一樣 [err,ser(indx)]=symerr(msg,decmsg); %誤符號(hào)率 end ser1=2*qfunc(sqrt(2*snr1)*sin(pi/M)); %理論誤符號(hào)率,誤差函數(shù) ber1=1/log2(M)*ser1; %理論誤比特率 figure(7),semilogy(EsN0,ber,'-ko',EsN0,ser,'-k*',EsN0,ser1,EsN0,ber1,'-k.');%semilogx函數(shù),semilogy函數(shù),即后標(biāo)為x的是在x軸取對(duì)數(shù),為y的是y軸坐標(biāo)取對(duì)數(shù)。 title('8-PSK載波調(diào)制信號(hào)在AWGN信道下的性能') xlabel('Es/N0');ylabel('誤比特率和誤符號(hào)率') legend('誤比特率','誤符號(hào)率','理論誤符號(hào)率','理論誤比特率')?
7.matlab中各種線型-顏色-標(biāo)記點(diǎn)
各種顏色屬性選項(xiàng)
'r' 紅色 'm' 粉紅
'g' 綠色 'c' 青色
'y' 黃色 'k' 黑色
?
各種線型屬性選項(xiàng)
'-' 實(shí)線 '--' 虛線
':' 點(diǎn)線 '-.' 點(diǎn)劃線
?
各種標(biāo)記點(diǎn)屬性選項(xiàng)
'.' 用點(diǎn)號(hào)繪制各數(shù)據(jù)點(diǎn) '^' 用上三角繪制各數(shù)據(jù)點(diǎn)
'+' 用'+'號(hào)繪制各數(shù)據(jù)點(diǎn) 'v' 用下三角繪制各數(shù)據(jù)點(diǎn)
'*' 用'*'號(hào)繪制各數(shù)據(jù)點(diǎn) '>' 用右三角繪制各數(shù)據(jù)點(diǎn)
' .' 用'.'號(hào)繪制各數(shù)據(jù)點(diǎn) '<' 用左三角繪制各數(shù)據(jù)點(diǎn)
's'或squar 用正方形繪制各數(shù)據(jù)點(diǎn)'p' 用五角星繪制各數(shù)據(jù)點(diǎn)
'd'或diamond用菱 形繪制各數(shù)據(jù)點(diǎn) 'h' 用六角星繪制各數(shù)據(jù)點(diǎn)
這些選項(xiàng)可以連在一起用,如:'-.g'表示繪制綠色的點(diǎn)劃線,'g+'表示用綠
色的 '+'號(hào)繪制曲線.
?
注意:
1)表示屬性的符號(hào)必須放在同一個(gè)字符串中;
2)可同時(shí)指定2~3個(gè)屬性;
3) 與先后順序無(wú)關(guān);
4)指定的屬性中,同一種屬性不能有兩個(gè)以上.
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的MATLAB在通信系统仿真中的注意的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pcl完整分割聚类流程
- 下一篇: infor wms 项目启动_派诺科技数