无线信道模拟设计 第16页4. 单径频率仿真法:
%RayJakes.m
%采用频率方法产生具有Jakes功率谱的瑞利衰落过程
%先将一组不相关的高斯分布样本进行适合的滤波,从而得到具有目标功率谱密度的高斯
%随机过程,然后利用两个复高斯随机过程的包络产生锐利衰落过程
clear
fd=100
impw=jakes_filter(fd);
fs=16*fd;
ts=1/fs;
time=[1*ts:ts:128*ts];
figure(1)
subplot(2,1,1)
stem(time,impw,'.');
grid;('冲激响应')
[h,f]=linear_fft(impw,128,ts);
subplot(2,1,2)
plot(f,abs(h.*h));
grid;
xlabel('频率');
ylabel('PSK')
%输入为高斯白噪声,求滤波器输出的功率谱密度
x=randn(1,1024);
y=filter(impw,1,x);
[output_psd ff]=log_psd(y,1024,ts);
figure(2)
subplot(2,1,1)
plot(ff,output_psd);
grid;
axis([-500 500 -50 0])
xlabel('频率');
ylabel('PSD')
%输入为复高斯白噪声,求滤波器输出的包络
z=randn(1,1024)+i*randn(1,1024);
zz=filter(impw,1,z);
time=(0.0:ts:1024*ts);
%归一化输出
zz=zz/max(max(abs(zz)));
subplot(2,1,2)
plot(time(161:480),10*log10(abs(zz(161:480))));
axis([0.1 0.3 -20 0])
xlabel('时间');
ylabel('幅度(dB)')
%程序结束
%%%%%%%%%%%%%%%%%
%File_C7:Jakes_filter.m
function[impw]=jakes_filter(fd)
%Jakes滤波器的FIR实现(128points)
n=512;
nn=2*n; %nn是FFT长度
fs=0:fd/64:fd; %抽样频率=16*fd
H=zeros(1,n); %初始化H(f)
for k=1:(n/8+1) %H(f)的pdf(k=1:65)
jpsd(k)=1/((1-((fs(k))/fd)^2+eps)^0.5);
if(jpsd(k))>1000
jpsd(k)=1000;
end
H(k)=jpsd(k)^0.5; %H的前65个点
end
for k=1:n
H(n+k)=H(n+1-k); %产生负频率
end
[inv,time]=linear_fft(H,nn,fd/64); %傅立叶反变换
imp=real(inv(450:577)); %中间128个点
impw=imp.*hanning(128)'; %采用hanning窗
energy=sum(impw.^2); %计算能量
impw=impw/(energy^0.5); %归一化
%程序结束
%%%%%%%%%%%%%
%File_C7:linear_fft.m
function[fftx,freq]=linear_fft(x,n,ts)
y=zeros(1,n);
for k=1:n
freq(k)=(k-1-(n/2))/(n*ts);
y(k)=x(k)*((-1.0)^(k+1));
end
fftx=fft(y)/n;
%程序结束
%%%%%%%%%%%%%%%
%File_C7:log_psd.m
function[logpsd,freq,ptotal,pmax]=log_psd(x,n,ts)
y=zeros(1,n);
h=waitbar(0,'For Loop in PSD Calculation');
for k=1:n
freq(k)=(k-1-(n/2))/(n*ts);
y(k)=x(k)*((-1.0)^k);
waitbar(k/n)
end
%该函数取n(必须为偶数)个时域样本点(实数或复数),通过式(fft/n)^2得到PSD
%双边带谱是通过对PSD进行平移得到的
v=fft(y)/n;
psd=abs(v).^2;
pmax=max(psd);
ptotal=sum(psd);
logpsd=10*log10(psd/pmax); %利用式10*log10(psd/max(psd)),PSD被归一化
%低于-60dB被设定等于-60dB
for k=1:n
if(logpsd(k)<-60.0)
logpsd(k)=-60.0;
end
end
close(h)
%程序结束
5. 频率选择性信道的仿真程序:
% main.m
clear
logEbNo=[0 15 25];
M=2;
Kdb=-inf;
%Kdb=5;
z=psk_rice(logEbNo,M,Kdb);
%%%%%%%%%%%%%%%%%%%%
unction BER=psk_rice(logEbNo,M,Kdb)
k=log2(M);
EbNolin=10.^(logEbNo/10);
Fd=1;
Fs=1;
Nit=100000;
Ns=1000;
Tstop=100;
for it_snr=1:length(EbNolin);
nstd=sqrt(1/(2*k*EbNolin(it_snr)));
bit_err=0;
for it=1:Nit
a=randint(Ns,1,M);
s=dmodce(a,Fd,Fs,'psk',M);
r=rice_fading(Kdb,Ns,1);
v_r=s.*r';
v=v_r+nstd*(randn(Ns,1)+...
j*randn(Ns,1));
z=ddemodce(v,Fd,Fs,'psk',M);
errors=biterr(a,z);
bit_err=bit_err + errors;
if bit_err>=Tstop
break
end
end
BER(it_snr)=bit_err/(it*Ns*k);
end
semilogy(logEbNo,BER,'k');%axis([2 8 10^(-1.9) 10^(-1.1)]);
legend('Kdb=-inf','Kdb=5');
xlabel('EbNo(dB)');
ylabel('BER');
grid on;
hold on;
%%%%%%%%%%%%%%%%%%%%
function r=rice_fading(Kdb,Ns,Mi)
Mi=1;
K=10^(Kdb/10);
const=1/(2*(K+1));
x=randn(1,Ns);
y=randn(1,Ns);
r=sqrt(const*((x+sqrt(2*K)).^2+y.^2));
rt=zeros(1,Mi*length(r));
ki=1;
for i=1:length(r)
rt(ki:i*Mi)=r(i);
ki=ki+Mi;
end
r=rt;
. 大尺度衰落程序
clear all
f=1600;
d=1:0.4:20;
hb=100;
hm=5;
a=3.2*[log(11.75*hm)]^2-4.97;
LM0=69.55+26.16*log(f)-13.82*log(hb)-a+[44.9-6.55*log(hb)]*log(d*1000);
figure(1)
LM1=28.6+35*log(d*1000);
plot(d,LM0,'ro',d,LM1,'go');legend('LM0','LM1');
axis([1,20,150,450]);
xlabel(' 传输距离');
ylabel(' 传输损耗 ');
<< 上一页 [11] [12] [13] [14] [15] [16] [17] 下一页
无线信道模拟设计 第16页下载如图片无法显示或论文不完整,请联系qq752018766