官方淘宝店 易迪拓培训 旧站入口
首页 > 无线通信 > 通信技术学习讨论 > 信道仿真的两个问题

信道仿真的两个问题

12-13
最近正好用到信道建模,
1。关于加性高斯白噪声信道的问题:matlab提供的函数是wgn.m文件,我在command window 下type wgn.m,显示的是用randn产生一个高斯随机变量,再和impedance and power做简单的运算就可以实现白噪化,那么如果我假设impdeance=1,power=0dbw,则就是完全的高斯随机变量了,从这个函数根本体现不出白噪声的特点,总不能这么认为,高斯随机变量就是白噪声吧?这好像是个两个不同的概念啊?此外,就是关于randn.m这个函数产生高斯随机变量,我在command window 下type randn.m ,结果内容都是说明性文档,里面提到%built-in function,然后给了些references,我想请教一下我从哪里可以看到关于它的源程序代码,我请教过,有人跟我说这是属于内核运算,我倒挺纳闷着,所以想向您求证一下,当然这个主要是出于好奇,因为john g.proakis 那本书已经提供了产生高斯随机变量的思路和源程序,我只是想看看matlab中到底是怎样来实现的。
2.关于瑞利衰落信道的建模问题 :看到的关于 rayleigh fading 的源程序不少 ,但是通过在command window 下 type rayleighchan.m发现 确实 软件中自带的软件功能比较强大 ,它既可以 用来仿真frequency-flat channel 也可以用来仿真frequency-selective fading channel ,同时也可以 仿真static channel,但是我不知道程序中核心语句:
chan = channel.rayleigh(varargin{:});
调用的成员函数rayleigh到底在哪里找得到,我在toolbox-〉comm-〉->comm->@chan->@rayleigh,晕 ,里面根本就没有函数执行的代码,一定是我弄错了 ,请大虾 给指条道 在哪里可以找到呢?
非常感谢!

1. 考虑到用randn产生的复高斯噪声序列是i.i.d.的,你自己分析一下频谱就应该得到结论了。
2. Rayleigh信道不过就是复高斯的,自己写一个就行了,不一定用Matlab下的。如果是Jakes' model的话,现在很多人都用这个文献里用的模型:
Y. R. Zheng and C. Xiao, "Simulation models with correct statistical properties for Rayleigh fading channels," IEEE Trans. Commun., vol. 51, no. 6, pp. 920-928, June 2003.

randn(1,N)+i*randn(1,N)
直接这个也能应付很多情况吧。

1。呵呵 ,真的很简单就可以知道了 ,我太笨了,只知道表面的,没去分析底层的。
2。能不能把跟这篇文献有关的源代码 让我借鉴一下 ,谢谢,可能要求有点过分。

自己写吧,没有任何难度。

刚写了,我过几天再完善一下,这几天有点事没时间。有两个问题到时再请教你,谢谢先!

参考一下这篇文章的附录,对zheng的方法有个小修改。否则zheng的方法在slow fading的情况下不是Rayleigh的。
T. Zemen and F. Mecklenbr?uker, "Time-variant channel estimation using discrete prolate spheroidal sequences," IEEE Trans. Signal Processing, vol. 53, no. 9, pp. 3597-3607, Sept. 2005.

谢谢,这个问题我倒还没注意,我只写完以后,想着如何用这个单径的来实现频选和mimo信道,后者好像我已经可以找到答案了,前者频选可能还有点问题。此外就是,写出来的信道程序,假设信号经过此信道,从理论上讲,信道的输出应该是输入信号和信道的卷积,那么我在这儿,如何实现?比如根据matlab自带的函数rayleighchan,设置完参数后chan=rayleighchan(...),信号X经过信道输出Y,应该这么处理:Y=filter(chan,X);而我根据文献编写的程序得到的信道并不是一个冲激响应的模型,而是将输入信号作为一个未经调制的载波信号经过信道后得到的信号,所以如果这时已调信号经过该信道应该不是卷积的方式,我倒是觉得应该是调制信号(或已调信号)和这个信道相乘。不知道对不对?因为根据文献编写的信道程序是未调制载波carrier经过信道chan得到的输出信号y=carrier*chan(*表示卷积),然后已调信号为s(t).carrier(.表示相乘)经过信道后得到的输出Y=[s(t).carrier]*chan=s(t).(carrier*chan)(后面等号好像有问题?如果没问题我的思路应该也没问题),还望指正。谢谢!

如果你说的频选是frequency-selective的意思,那只有一径的信道无法实现,因为一径的信道是平衰落。事实上,传输的信号是和每一条路径的gain相乘,当不同时延的路径多于一条(frequency-selective)的时候,才是卷积。
如果不考虑发射、接收和各路径之间的相关性,比如一个2-input 2-output的信道,每个信道都是3-tap的,那一般来说,直接仿真2×2×3个路径就可以了。
一般来说,如果不是OFDM一类涉及到载波处理的问题,仿真的时候只考虑基带就可以了:
y(n)=\sum_{l}(h(n;l)*s(n-l))这样的简单卷积处理就可以了(*这里代表乘法,l是路径的index)。
从我个人的角度,如果不是非常复杂的情况,各个函数最好自己写。比方说rayleighchan,我看不到源程序,也不是很清楚Matlab具体是什么算法,所以仿真的时候如果有问题不好控制。
你最后的等式应该没有问题,可以参考一下Xiaodong Wang和H. V. Poor的Wireless Communication Systems: Advanced Techniques for Signal Processing的第一章。

哇,你真的好强啊,随便都可以给我很多有用的资料,非常感谢,让我少走很多弯路,谢谢!


.51

大牛comes

不是式子有问题,是原帖的表示方法有歧义。
可以参考一下X. Wang和Poor的那本Wireless Comuunication Systems的书的(1.8),(1.9)和(1.11)-(1.18)。事实上在线性调制的前提下,这个式子应该写为[\sum_{n}s(n)carrier(t)]*channel(t,u),index不一样的,所以s(n)提出来没有问题。
至于一般的情况,可以看Proakis的Digital Communications的Section 14.1。

呵呵,这样写是可以的....
象他原来那样写,会连信号的时域扩散都看不到了... hehe..
.51

非常感 谢二位,我得好好补补基础了,至少要理清这些关系,看来自己真的太笨了,好多东西需要狂补。

randn(1,N)+i*randn(1,N)应该理解成单径的衰落还是理解成大量多径叠加的结果。又该如何仿真频选率落?是不是可以简单的用多个randn(1,N)+i*randn(1,N)叠加产生

是大量不可辨别的多径信号在接收端的叠加,仿真的时候认为是平衰落的单径就可以了。
仿真频率选择性信道的话,这里的多径是可辨别的多径,即多径时延可以同基带的symbol interval比拟,如果对频谱没有特殊的要求,用多个平衰落叠加就可以了。

那篇文章里面的N=4M+2什么意思,只能2,6,10……?

Top