le75756969
2010-03-22, 16:36
小弟不才,对于MATLAB和无线信道不是非常了解。
尤其是MATLAB的程序,目前要做一个无线瑞利信道的仿真,就是最后的程序不知道怎么改,马上就要交了,很急!希望懂的大大能帮我下,要求和程序一下放出,希望好心人能把改好的程序写出来或者发我的邮箱!le75756969@163com,万分感谢!
我们的要求是在原有的程序基础上,建立一个瑞利无线信道的仿真,仿真模型是常用的JACK模型。以下发的程序是单径,要求改成是3径,希望懂matlab的高手能帮我修改下程序,在时间上第一条信号延迟0.5us,第2条延迟1.0us,第3条延迟1.5us。就可以了。
-----------------------------------------------------------------------------分割线----------------------------------------------------------------
%%jakes.m
%%本程序将一随机信号通过瑞利信道,产生输出
%%
clear,clc,close all;
Ts=0.02;
fmax=2; %最大多普勒频移
Nt=400; %采样序列的长度
sig=j*ones(1,Nt); %信号
t=[0:Nt-1];
%设定信道仿真参数
N0=25;
D=1;
[u]=JakesRayleigh(N0,D,fmax,Nt,Ts);
RecSignal=u.*sig;
plot(20*log10(abs(RecSignal)))
------------------------------------------------------------------------分割线-------------------------------------------------------------------
%%JakesRayleigh.m
%%本函数用Jakes方法产生单径的符合瑞利分布的复随机过程
%%
function [u]=JakesRayleigh(N0,D,fmax,M,Ts,fc)
%输入参数
% N0 频率不重叠的正弦波个数
% D 方差,可由输入功率得到
% fmax 最大多普勒频移
% M 码片数
%输出参数
% u 输出复信号
% u1 输出复信号的实部
% u2 输出复信号的虚部
%%
N=4*N0+2; %Jakes仿真叠加正弦波的总个数
%计算Jakes仿真中的离散多普勒频率fi.n
f=zeros(1,N0+1);
for n=1:N0,
f(n)=fmax*cos(2*pi*n/N);
end
f(N0+1)=fmax;
%计算多普勒增益ci.n
%同向分量增益c1.n
c1=zeros(1,N0+1);
for n=1:N0
c1(n)=D*(2/sqrt(N))*2*cos(pi*n/N0);
end
c1(N0+1)=D*(2/sqrt(N))*sqrt(2)*cos(pi/4);
%正交分量增益c2.n
c2=zeros(1,N0+1);
for n=1:N0
c2(n)=D*(2/sqrt(N))*2*sin(pi*n/N0);
end
c2(N0+1)=D*(2/sqrt(N))*sqrt(2)*sin(pi/4);
%插入随机相移ph_i,解决Jakes方法的广义平稳过程
n=(1:N0+1);
U=rand(size(n));
[x,k]=sort(U);
ph_i=2*pi*n(k)/(N0+1);
%计算复包络
u1=zeros(1,M); %Rc(t)
u2=zeros(1,M); %Rs(t)
u=zeros(1,M); %R(t)
k=0;
%计算Rc(t)
k=0;
for t=0:Ts:(M-1)*Ts,
w1=cos(2*pi*f*t+ph_i);
ut1=c1*w1.';
k=k+1;
u1(k)=ut1;
end;
%计算Rs(t)
k=0;
for t=0:Ts:(M-1)*Ts,
w2=cos(2*pi*f*t+ph_i);
ut2=c2*w2.';
k=k+1;
u2(k)=ut2;
end;
%计算U(t)
k=0;
for t=0:Ts:(M-1)*Ts,
k=k+1;
u(k)=u1(k)-j*u2(k);
end;
尤其是MATLAB的程序,目前要做一个无线瑞利信道的仿真,就是最后的程序不知道怎么改,马上就要交了,很急!希望懂的大大能帮我下,要求和程序一下放出,希望好心人能把改好的程序写出来或者发我的邮箱!le75756969@163com,万分感谢!
我们的要求是在原有的程序基础上,建立一个瑞利无线信道的仿真,仿真模型是常用的JACK模型。以下发的程序是单径,要求改成是3径,希望懂matlab的高手能帮我修改下程序,在时间上第一条信号延迟0.5us,第2条延迟1.0us,第3条延迟1.5us。就可以了。
-----------------------------------------------------------------------------分割线----------------------------------------------------------------
%%jakes.m
%%本程序将一随机信号通过瑞利信道,产生输出
%%
clear,clc,close all;
Ts=0.02;
fmax=2; %最大多普勒频移
Nt=400; %采样序列的长度
sig=j*ones(1,Nt); %信号
t=[0:Nt-1];
%设定信道仿真参数
N0=25;
D=1;
[u]=JakesRayleigh(N0,D,fmax,Nt,Ts);
RecSignal=u.*sig;
plot(20*log10(abs(RecSignal)))
------------------------------------------------------------------------分割线-------------------------------------------------------------------
%%JakesRayleigh.m
%%本函数用Jakes方法产生单径的符合瑞利分布的复随机过程
%%
function [u]=JakesRayleigh(N0,D,fmax,M,Ts,fc)
%输入参数
% N0 频率不重叠的正弦波个数
% D 方差,可由输入功率得到
% fmax 最大多普勒频移
% M 码片数
%输出参数
% u 输出复信号
% u1 输出复信号的实部
% u2 输出复信号的虚部
%%
N=4*N0+2; %Jakes仿真叠加正弦波的总个数
%计算Jakes仿真中的离散多普勒频率fi.n
f=zeros(1,N0+1);
for n=1:N0,
f(n)=fmax*cos(2*pi*n/N);
end
f(N0+1)=fmax;
%计算多普勒增益ci.n
%同向分量增益c1.n
c1=zeros(1,N0+1);
for n=1:N0
c1(n)=D*(2/sqrt(N))*2*cos(pi*n/N0);
end
c1(N0+1)=D*(2/sqrt(N))*sqrt(2)*cos(pi/4);
%正交分量增益c2.n
c2=zeros(1,N0+1);
for n=1:N0
c2(n)=D*(2/sqrt(N))*2*sin(pi*n/N0);
end
c2(N0+1)=D*(2/sqrt(N))*sqrt(2)*sin(pi/4);
%插入随机相移ph_i,解决Jakes方法的广义平稳过程
n=(1:N0+1);
U=rand(size(n));
[x,k]=sort(U);
ph_i=2*pi*n(k)/(N0+1);
%计算复包络
u1=zeros(1,M); %Rc(t)
u2=zeros(1,M); %Rs(t)
u=zeros(1,M); %R(t)
k=0;
%计算Rc(t)
k=0;
for t=0:Ts:(M-1)*Ts,
w1=cos(2*pi*f*t+ph_i);
ut1=c1*w1.';
k=k+1;
u1(k)=ut1;
end;
%计算Rs(t)
k=0;
for t=0:Ts:(M-1)*Ts,
w2=cos(2*pi*f*t+ph_i);
ut2=c2*w2.';
k=k+1;
u2(k)=ut2;
end;
%计算U(t)
k=0;
for t=0:Ts:(M-1)*Ts,
k=k+1;
u(k)=u1(k)-j*u2(k);
end;