返回信息流下面的代码是仿真SUI信道,其有3径,第一径是赖斯分布,其他两径为瑞利分布,然后该随机变量通过多普勒滤波器形成具有多普勒谱的信道参数,通过重采样得到各径抽头系数(即各径的快衰值)。其中 Doppler PSD,resample我已经看了两天了,感觉一点也看不懂,连基本原理是啥感觉都模糊,非常诚心的希望懂的同学能给我具体讲讲(对SUI模型一点也不懂),有详细的资料发给我也行(邮箱:buptlzc@gmail.com)。
function [y]=paths_OR()
%%%%%%%%%%%%%%%%%%%%%%%%%%% simulation parameters %%%%%%%%%%%%%%%%%%%%%%%
N=40000; %number of independent random realizations
OR=4; %observation rate in Hz
M=1024; %number of taps of the Doppler filter
Dop_res=0.1; %Doppler resolution of SUI parameter in Hz
res_accu=20; %accuracy of resampling process
%%%%%%%%%%%%%%%%%%%%%%% SUI-3/Omni channel parameters %%%%%%%%%%%%%%%%%%%
p=[0,-5,-10]; %power in each tap in dB
k=[1,0,0]; %Ricean K-factor in linear scale
tau=[0.0,0.5,1.0]; %tap delay in us
Dop=[0.4,0.4,0.4]; %Doppler maximal frequency parameter in Hz
ant_corr=0.4; %antenna correlation
Fnorm=-1.5113; %gain normalization factor in dB
%%%%%%%%%%%%%%%%%%%%%%% calculate the power %%%%%%%%%%%%%%%%%%%%%%%%%%%
p=10.^(p/10); %calculate linear power
s2=p./(k+1); %calculate variance
m2=p.*(k./(k+1)); %calculate constant power
m=sqrt(m2); %calculate constant part
%%%%%%%%%%%%%% calculate the Ricean channel coefficients %%%%%%%%%%%%%%
L=length(p); %number of taps
paths_r=sqrt(1/2)*(randn(L,N)+j*randn(L,N)).*((sqrt(s2))'*ones(1,N));
paths_c=m'*ones(1,N);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Doppler PSD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:3
D=Dop(i)/max(Dop)/2; %normalize to highest Doppler
f0=[0:M*D]/(M*D); %frequency vector
PSD=0.758*f0.^4-1.72*f0.^2+1.0; %PSD approximation
filt=[PSD(1:end-1),zeros(1,M-2*M*D),PSD(end:-1:2)]; %S(f)
filt=sqrt(filt); %from S(f) to H(f)
filt=ifftshift(ifft(filt)); %get impulse response
filt=real(filt); %want a real-valued filter
filt=filt/sqrt(sum(filt.^2)); %normalize filter
path=fftfilt(filt,[paths_r(i,:),zeros(1,M)]);
paths_r(i,:)=path(1+M/2:end-M/2);
end;
paths=paths_r+paths_c;
paths=paths*10^(Fnorm/20);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% resample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SR=max(Dop)*2; %implicit sample rate
m=lcm(SR/Dop_res,OR/Dop_res);
P=m/SR*Dop_res; %find nominator
Q=m/OR*Dop_res; %find denominator
paths_OR=zeros(L,ceil(N*P/Q)); %creat new array
for s=1:3
paths_OR(s,:)=resample(paths(s,:),P,Q,res_accu);
end;
y=paths_OR;
这是一条镜像帖。来源:北邮人论坛 / matlab / #7882同步于 2011/2/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
谁能看懂这段M程序?
lzc86
2011/2/25镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复