各位高手请帮我看段代码,关于莱斯信道仿真(VC)
01-01
以下代码是根据莱斯分布的定义由Z=X-jY+T;X,Y为高斯随机变量,T为LOS路径,T可由K因子求出,
好象莱斯信道的仿真很少,因为其概率密度函数不是闭式,很难仿真,我有点怀疑这种简单的算法有多大的可行性,或者有什么局限性,适合无线移动信道吗?
如果不适合,那位大侠知道莱斯信道仿真的方法或代码,能否告知一下,
Double rice_fading(int k,double mu, double ro, double& seed)
{
double x,y,r,con;
con=0.5/(k+1);
x=rand_NormalDistributing_One(mu, ro, seed);//产生两个独立高斯随机 变量
y=rand_NormalDistributing_One(mu, ro, seed);
r=sqrt(con*((x+sqrt(2*k))*(x+sqrt(2*k))+y*y));
return r;
}
//高斯随机变量产生函数
double rand_NormalDistributing_One(double mu, double ro, double& seed)
{
double rand = 0.0;
for (size_t st=0; st<12; st++)
{
seed = RandCoef2053 * (seed) + RandCoef13849; //乘、加系数
seed =(unsigned long)seed % MODUL65536; //以65536为模对种子取余
rand = rand + (seed) / (double)MODUL65536;
}
rand = mu + ro * (rand - 6.0);
return(rand);
}
好象莱斯信道的仿真很少,因为其概率密度函数不是闭式,很难仿真,我有点怀疑这种简单的算法有多大的可行性,或者有什么局限性,适合无线移动信道吗?
如果不适合,那位大侠知道莱斯信道仿真的方法或代码,能否告知一下,
Double rice_fading(int k,double mu, double ro, double& seed)
{
double x,y,r,con;
con=0.5/(k+1);
x=rand_NormalDistributing_One(mu, ro, seed);//产生两个独立高斯随机 变量
y=rand_NormalDistributing_One(mu, ro, seed);
r=sqrt(con*((x+sqrt(2*k))*(x+sqrt(2*k))+y*y));
return r;
}
//高斯随机变量产生函数
double rand_NormalDistributing_One(double mu, double ro, double& seed)
{
double rand = 0.0;
for (size_t st=0; st<12; st++)
{
seed = RandCoef2053 * (seed) + RandCoef13849; //乘、加系数
seed =(unsigned long)seed % MODUL65536; //以65536为模对种子取余
rand = rand + (seed) / (double)MODUL65536;
}
rand = mu + ro * (rand - 6.0);
return(rand);
}
???????
有这么难么?
看了您的帖子,我就是想问,k的取值是与环境有关的吧?现在我只知道直射径和各条非直射径的时延,衰落,这样能确定k值吗
相关文章:
- 请教Rayleigh信道仿真的参考文献(05-08)
- OFDM仿真中信道过采样的问题(05-08)
- 对于香农定理和信道容量的思考(05-08)
- matlab7中瑞利信道的函数是哪个?(05-08)
- 问:::MIMO下 信道估计的一种新想法.+++(05-08)
- MIMO中常将信道归一化的目的?(05-08)
射频专业培训教程推荐