訊雜比計算方式(小問題解惑)

2021-10-19 07:20:58 字數 1972 閱讀 4297

使用之前學姐的**,總有些奇怪的感覺,然後一直也不知道訊雜比算對了沒,然後經過學習終於差不多懂了訊雜比如何計算。

通過使用awgn函式新增雜訊對snr進行驗證:

fs=50;

% 取樣率

n=fs*60;

% 取樣點數(n):n = fs * t

t =0:1

/fs :

(n-1

)/fs;

% 橫座標t座標精度

x =5

*sin(2

*pi*

10*t)

;% 產生正弦訊號

y =awgn

(x,10

,'measured');

% 加入訊雜比為10db的雜訊,加入前預估訊號的功率(強度)

sigpower =

sum(

abs(x).^

2)/length

(x)% 求出訊號功率

noisepower=

sum(

abs(y-x).^

2)/length

(y-x)

% 求出雜訊功率

snr=10*

log10

(sigpower/noisepower)

% 由訊雜比定義求出訊雜比,單位為db

結果如下所示,snr較接近於10,與加入的對比相近。

注:訊雜比的計量單位是db,其計算方法是10log(ps/pn),其中ps和pn分別代表訊號和雜訊的有效功率,也可以換算成電壓幅值的比率關係:20log(vs/vn),vs和vn分別代表訊號和雜訊電壓的「有效值」。

另一種方法是直接將上述式子簡化:

snr3=10*

log10

(sum

((x.^2

))/sum((

(y-x).^

2)))

結果如下述所示:三者計算結果一致:

因為一般雜訊與原始訊號長度相同,且一般是實數,可直接將上述式子簡化為snr3的計算方式。

學姐的snr公式如下:

snr4=10*

log10

((x.^2

)/((y-x).^2))

結果為:snr4 = 5.281175664797473

通過搜尋,兩個一維陣列直接用』/'相除得到的是什麼?→矩陣右除運算,相當於是求方程 x·b = a 的最小二乘解:x = a/b。這個相當於: x = a*pinv(b)。說明snr4求得的解不是snr。

矩陣右除的解釋(來自官網):x = b/a 是方程 xa = b 的解。矩陣 a 和 b 必須擁有相同的列數。用左除運算子表示的話,b/a = (a』\b』)』。

因此原來的想法應該是想讓兩個功率值相除變成了求解方程的最小二乘解,所以把兩個向量通過sum加成乙個數值再進行運算,問題得以解決。

兩個一維陣列直接用』/'相除得到的是什麼?

矩陣 b/a的含義

SSH之小問題解惑

注 以下版本指的是spring3 hibernate3 struts2 1,web開發中,servlet物件是否執行緒安全?當乙個http請求到來時,web容器的排程執行緒 dispach thread 會從已經初始化的執行緒池中分配乙個工作執行緒 worker thread 來負責處理該請求,該工...

Hyper V常用問題解惑

hyper v常見問題解惑 微軟在windows server 2008 r2中發布了hyper v 2.0,這款伺服器虛擬化產品在效能上有了大幅提高,尤其是開始支援livemigration,更是激起了很多虛擬化技術愛好者的濃厚興趣。很多企業和個人使用者都紛紛開始測試hyper v 2.0的部署,...

Hyper V常用問題解惑

hyper v常見問題解惑 微軟在windows server 2008 r2中發布了hyper v 2.0,這款伺服器虛擬化產品在效能上有了大幅提高,尤其是開始支援livemigration,更是激起了很多虛擬化技術愛好者的濃厚興趣。很多企業和個人使用者都紛紛開始測試hyper v 2.0的部署,...