資源簡介
通信系統中關于多徑衰弱信道的仿真實現,包括瑞利衰減信道、高斯信道的MATLAB仿真與對比分析以及蒙特卡羅的應用

代碼片段和文件信息
%BipolarNRZ_Ray.m?Simulate?the?performance?of?Bipolar?NRZ?in?Rayleigh?fading?channels
clear?all;
close?all;
%Eb/N0?in?dB
Eb_N0_dB=0:1:10;
%Convert?Eb/N0?into?the?linear?scale
Eb_N0=10.^(Eb_N0_dB/10);
Eb=1;
%Fix?the?bit?duration?to?be?1
T=1;
%Calculate?the?signal?amplitude
A=sqrt(Eb/T);
%Engergy?of?bit?0
E0=A^2*T;
%Engergy?of?bit?1
E1=A^2*T;
%Optimal?threshold
Thr=(E1-E0)/2;
%Calculate?the?correspnding?noise?power?spectral?density
N0=Eb./Eb_N0;
%Number?of?different?SNRs
len_EbN0=length(Eb_N0);
%Total?number?of?bits?per?block
N_bit=10000;
%Maximum?number?of?blocks?to?simulate
N_block=1000;
%Eb/N0?index?pointer
EbN0_pointer=1;
temp_EbN0_pointer=EbN0_pointer;
%Number?of?errors?counted?for?each?Eb/N0
errs=zeros(1len_EbN0);
%Number?of?blocks?simulated?for?each?Eb/N0
block_count=zeros(1len_EbN0);
%While?the?Eb/N0?index?pointer?has?not?reached?the?last?value?and?the
%number?of?blocks?has?not?exceeded?the?maximum?number?N_block
%do?the?iterations
while?(EbN0_pointer?<=?len_EbN0)?&&?(block_count(len_EbN0)?%Generate?a?binary?bit?sequence
D?=?round(rand(1N_bit));
for?i?=?1:1:N_bit
????if?D(i)==0
???????D(i)=-1;
????end????
end????
%Rayleigh?fading?Channel?gain?h??(omega=1)
h=sqrt(1/2)*(randn(1N_bit)+1i*randn(1N_bit));
%%gaussian?0dBvariance??
Noise=sqrt(1/2)*(randn(1N_bit)+1i*randn(1N_bit));
%Simulate?different?Eb/N0?values
for?n?=?EbN0_pointer?:?len_EbN0
%?Transmit?signal????
Tx_data?=A*h.*D+A*Noise/sqrt(Eb_N0(n));%equalization???????????????除以sqrt(Eb_N0(n))是用來控制信噪比的?
%Received?signal
Rx_data=Tx_data./h;
%Recover?the?transmit?data?from?the?received?data.
%When?the?output?is?Rx_data>Th?output?1;?otherwise?output?-1.
Recov_data?=?zeros?(1N_bit);
Recov_data?(Rx_data>Thr)=1;
Recov_data?(Rx_data<=Thr)=-1;
%Count?the?number?of?errors
for?i=1:1:N_bit
????if?Recov_data(i)~=?D(i)
???????errs(n)?=?errs(n)+?1;
????end
end
%If?more?than?500?errors?have?been?counted?move?the?Eb/N0
%index?pointer?to?the?next?Eb/N0
if?errs(n)>=500
???temp_EbN0_pointer?=?temp_EbN0_pointer+1;
end
%Update?the?nubmer?of?blocks?simulated
block_count(n)=block_count(n)+1;
end
%Update?Eb/N0?pointer
EbN0_pointer=temp_EbN0_pointer;
block_count;
end
%Calculate?the?numerical?BERs?for?different?Eb/N0‘s.?Each?block?has?N_bit?bits.
Rayleigh_Num_BER?=?errs./(N_bit*block_count);???????
%calculate?Analytical?BER?in?Rayleigh?fading?channels
%generate?a?Rayleigh?fading?channel?
N=10000;
Ray_noise=sqrt(1/2)*(randn(1N)+1i*randn(1N));%sqrt(1/2)是讓信號方差為1,0db即信號能量為1
mean2=zeros(1len_EbN0);
for?n=1:len_EbN0
%calculate?mean[|h|^2]
mean2(n)=mean(abs(Ray_noise).^2);
%?calculate?gamma0
gamma0(n)=Eb_N0(n).*mean2(n);
end
%calculate?BER?in?Rayleigh?fading?channnels
Rayleigh_BER=(1/2)*(1-sqrt(gamma0./(gamma0+1)));
%calculate?BER?in?Rayleighfading?channels?if?gamma0>>1
ApproxRayleigh_BER=1./(4*gamma0);
%plot
figure(1);
semilogy(Eb_N0_dBApproxRayleigh_BER?‘r-o‘);
hold?on;
semilogy(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????22871??2018-10-13?14:53??RayFading\Bio_Ray.fig
?????文件???????3304??2018-10-13?14:52??RayFading\Bipolar_Ray.m
?????文件??????24801??2018-10-13?14:57??RayFading\Fading.fig
?????文件?????393885??2018-10-08?17:14??RayFading\Fading.pdf
?????文件???????1005??2018-10-13?14:56??RayFading\FFading.m
?????文件?????????49??2018-09-27?14:54??RayFading\Q.m
?????文件???????3043??2018-10-13?14:57??RayFading\Unipolar_Ray.m
?????文件??????22861??2018-10-13?14:53??RayFading\Uni_Ray.fig
?????目錄??????????0??2018-10-13?14:59??RayFading
-----------?---------??----------?-----??----
???????????????471819????????????????????9
評論
共有 條評論