加性高斯白雜訊通道 MATLAB小例題

2021-09-19 07:47:28 字數 3362 閱讀 2608

1.db

(1)db 是乙個純計數單位:db = 10logx;

x = 1000000000000000 = 10logx = 150 db 

x = 0.000000000000001 = 10logx = -150 db

db的引入是為了把乘除關係變換為加減,便於工程中的運算。

(2)db是乙個表徵相對值的值,當考慮甲的功率相比於乙功率大或小多少個db時,按下面計算公式:

10lg(甲功率/乙功率)

甲功率=乙功率:  10lg(1)=0db;

甲功率=2*乙功率:10lg(2)=3db;

2.dbw:以1w為基準

3.dbm:以1mw為基準

由此可見,0dbw是乙個比0dbm大得多的多的單位,功率上相差1000倍。

dbm 減 dbm 實際上是兩個功率相除。比如:

(訊號)30dbm - (雜訊)0dbm = (訊號功率)1000mw/1mw(雜訊功率) = 1000 = 30db。(式1)

4.snr(訊雜比=訊號功率/雜訊功率)(訊雜比snr(db)=訊號功率(dbw)-雜訊功率(dbw))

本來2個數相除((snr)1000w/1w)轉化為2個數相減30dbw-0dbw=30db(snr)

若訊號功率為0dbw,因此,雜訊的實際功率-snrdbw。(式1)

例題一:

在正弦訊號上疊加功率為-20dbw的高斯白雜訊。

clear all

t = 0:0.001:10;             

x = sin(2*pi*t);              

snr = 20;                          %設定加性高斯白雜訊功率

y = awgn(x,snr);              %正弦訊號上疊加高斯白雜訊

subplot(2,1,1);plot(t,x);title('正弦訊號x');

subplot(2,1,2);plot(t,y);title('疊加高斯白雜訊的正弦訊號');

z = y-x;

var(z)                               %計算雜訊功率(方差)

ans = 0.01

函式awgn(x,snr)把加性高斯白雜訊疊加到輸入訊號x中,snr以db的形式指定雜訊的功率。

這種情況下,訊號的功率假設為0dbw(其實訊號功率並不是0dbw,原來此處是假設!),雜訊的功率實際上等於-snrdbw。於是,snr的值為20。

結果顯示雜訊功率為0.01,該值是由snr決定的。

例題二:

clear all

t = 0:0.001:10;               

x = sin(2*pi*t);             

snr = 20;                           %設定加性高斯白雜訊功率

y = awgn(x,snr,10);           %正弦訊號上疊加高斯白雜訊

subplot(2,1,1);plot(t,x);title('正弦訊號x');

subplot(2,1,2);plot(t,y);title('疊加高斯白雜訊的正弦訊號');

z = y-x;

var(z)                        %計算雜訊功率(方差)

函式awgn(x,snr,sigpower):假設輸入訊號的功率為sigpower(單位:dbw)(原來都是假設!)

10dbw-雜訊功率=20db,雜訊功率=-10dbw

結果恰好:ans = 0.100。

例題三:終於計算訊號功率了:awgn(x,snr,'measured')

clear all

t = 0:0.001:10;             

x = sin(2*pi*t);              

snr = 20;                                         %設定加性高斯白雜訊功率

y = awgn(x,snr,'measured');           %正弦訊號上疊加高斯白雜訊

subplot(2,1,1);plot(t,x);title('正弦訊號x');

subplot(2,1,2);plot(t,y);title('疊加高斯白雜訊的正弦訊號');

z = y-x;

var(z)                         %計算雜訊功率(方差)

ans = 0.005

實際訊號功率為0.5(sum(abs(x).^2)/length(x)),snr=20db,雜訊功率0.005,結果也驗證了這一點。

例題四:用randn函式產生加性高斯白雜訊

randn(n):返還乙個n行n列的隨機矩陣,每一行每一列都服從均值為0,方差為1的正態分佈;

randn(m,n):返還乙個m行n列的隨機矩陣,每一行每一列都服從均值為0,方差為1的正態分佈;

clear all

t = 0:0.001:10;

x = sin(2*pi*t);

px = norm(x).^2/length(x);          %計算訊號x的功率

snr = 20;                                     %訊雜比,db形式

pn = px./(10.^(snr./10));              %根據snr計算雜訊功率

n = sqrt(pn)*randn(1,length(x));  %根據雜訊功率產生相應的高斯白雜訊序列

y = x+n;                          

subplot(2,1,1);plot(t,x);title('正弦訊號x')

subplot(2,1,2);plot(t,y);title('疊加了高斯白雜訊後的正弦訊號')

var(n)

ans = 0.005

x為一向量,norm(x)=norm(x,2)返回向量的2範數:即sum(abs(x).^2)^1/2;

根據雜訊功率產生相應的高斯白雜訊序列,要對雜訊功率進行開方運算。(d(cx)=c^2d(x))

復加性高斯白雜訊訊號的maltab實現

參考 高斯分布方差與功率的關係 awgn函式 英文復高斯分布詳解 新增復高斯白雜訊的驗證 matlab復訊號新增高斯加性白雜訊 利用awgn函式,並驗證 clear n 1000 sig 2 randint 1,n 3 j randint 1,n 訊號 y2 awgn sig,10,measured...

Matlab白雜訊高斯雜訊

實現書本 隨機控制 上關於生成高斯白雜訊的方法。白雜訊就是標準均勻分布偽隨機數列。1.標準均勻分布函式,均值1 2,方差1 12 x1 1973 y zeros 1,500 for i 1 500 x1 mod 91 x1,10 4 y 1,i x1 10000 end stem y xlabel ...

對乙個訊號新增帶限高斯白雜訊 Matlab實現

clear clc close all 產生乙個時域訊號 signalinput cos 2 pi 1000 1 1 2048 5000 設計乙個帶通濾波器 rp 0.1 passband ripple rs 50 stopband ripple fs 2000 sampling frequency...