(1)首先計算已知信號序列(采樣之后得到的信號)的平均功率。該序列在第n個點處的功率為:
如果已知的信號序列中的總共的點數為N個,則該序列的平均功率為:
在MATLAB中求平均功率的方法是:
Pav=sum(x.^2)/length(x);
(2)第二步是求單個符號的能量。能量的定義是功率乘以時間。對於單個符號來說,因為已經被采樣了,每個符號可能對應多個采樣點。因此,此處需要已知符號速率。
每個符號的能量為:
在MATLAB中求單位符號能量的方法是:
Eb=sum(x.^2)/(length(x)*fb);
(3)第三步是求噪聲的單邊功率譜密度。根據Eb/N0即可,注意首先要把dB轉化為實際的倍數。若已知的Eb/N0是dB單位的,則轉化過程如下:
ebn0=10^((EbN0)/10);
隨后得到n0:
n0=Eb/ebn0;
(4)第四步是根據噪聲的單邊功率譜密度求噪聲的方差。對於實信號來說,如果信號的采樣頻率是fs,則噪聲帶寬為采樣頻率的一半。噪聲的方差即為噪聲的平均功率,噪聲的平均功率是單邊功率譜密度和噪聲帶寬的乘積,因此噪聲的方差為:
MATLAB中的計算過程:
pn=n0*fs/2;(從實際仿真的結果來看,乘以fs是符合理論值的,該內容需要進一步核實)
(5)第五步即生成噪聲序列。
NOISE=sqrt(pn)*randn(1,length(x));
注:參考文獻:
Bit-Error-Rate Simulation Using Matlab
作者:JE Gilley
http://xueshu.baidu.com/s?wd=paperuri:(18dc898216ce76b4c166f194fab1b349)&filter=sc_long_sign&sc_ks_para=q%3DBit-Error-Rate+Simulation+Using+Matlab&tn=SE_baiduxueshu_c1gjeupa&ie=utf-8&sc_us=12877983928575481934