文章目錄
- 一、相關函數應用場景
- 1、生成高斯白噪聲
- 2、信噪比 SNR
- 3、根據信噪比 SNR 求信号幅度
- 4、産生單載波信号及最終信号
- 5、求自相關函數及功率
- 6、matlab 完整代碼
一、相關函數應用場景
求下面信号的 " 自相關函數 " :
x
(
n
)
=
sin
(
2
π
f
n
)
+
N
(
n
)
x(n) = \sin(2\pi fn) + N(n)
x(n)=sin(2πfn)+N(n)
其中
N
(
n
)
N(n)
N(n) 為 高斯白噪聲 ;
高斯白噪聲 符合 正态分布 特性 , 其 均值為
0 , 方差為
1
1
1 , 其功率譜密度是白的 , 在所有的頻率上 , 其功率都相同 ;
在上一篇部落格 【數字信号處理】相關函數應用 ( 相關函數應用場景 | 噪聲中檢測信号原理 ) 中 , 使用了公式推導的方法求相關函數 , 本篇部落格使用 matlab 求相關函數 ;
下面開始使用 matlab 計算
x
(
n
)
=
sin
(
2
π
f
n
)
+
N
(
n
)
x(n) = \sin(2\pi fn) + N(n)
x(n)=sin(2πfn)+N(n) 的相關函數 ;
1、生成高斯白噪聲
生成 高斯白噪聲 序列 , 均值 0 , 方差 1 ;
randn(1,200);
上述代碼 生成的 高斯白噪聲 序列 是一個 有 200 個元素的行向量 ,
如果是
randn(2, 200)
代碼 , 則生成的是一個
2
×
200
2 \times 200
2×200 的矩陣 ;
2、信噪比 SNR
SNR 是信噪比 ,
P
s
P_s
Ps 是信号功率 ,
P
N
P_N
PN 是噪聲功率 , 其關系是 :
S
N
R
=
10
log
10
P
s
P
N
SNR = 10 \log_{10}\cfrac{P_s}{P_N}
SNR=10log10PNPs
在 matlab 中 , 設定信噪比為
7
7
7 ;
% 設定 信噪比
SNR = 7;
3、根據信噪比 SNR 求信号幅度
信号
A
sin
ω
n
A \sin \omega n
Asinωn , 其功率是
P
s
=
A
2
2
P_s = \cfrac{A^2}{2}
Ps=2A2 , 噪聲功率 是
P
N
=
1
P_N=1
PN=1 , 将其帶入到信噪比公式中 :
S
N
R
=
10
log
10
P
s
P
N
=
10
log
10
A
2
2
1
=
10
log
10
A
2
2
SNR = 10 \log_{10}\cfrac{P_s}{P_N} = 10 \log_{10}\cfrac{\cfrac{A^2}{2}}{1} = 10 \log_{10}\cfrac{A^2}{2}
SNR=10log10PNPs=10log1012A2=10log102A2
根據信噪比 計算 幅度
A
A
A :
S
N
R
10
=
l
o
g
10
A
2
2
\cfrac{SNR}{10} = log_{10}\cfrac{A^2}{2}
10SNR=log102A2
A
2
2
=
1
S
N
R
10
\cfrac{A^2}{2} = 10^{\cfrac{SNR}{10}}
2A2=1010SNR
A
2
=
2
×
1
S
N
R
10
A^2 = 2 \times 10^{\cfrac{SNR}{10}}
A2=2×1010SNR
A
=
2
×
1
S
N
R
10
A = \sqrt{2 \times 10^{\cfrac{SNR}{10}}}
A=2×1010SNR
寫成 matlab 代碼為 :
% 根據 信噪比 計算信号幅度
SignalAmplitude = sqrt( 2 * 10^(SNR/10) );
4、産生單載波信号及最終信号
根據
A
sin
ω
n
A \sin \omega n
Asinωn 公式 , 産生 200 個信号 , 其中
A
A
A 之前已經求出 ;
% 根據 Asinωn 産生 200 個信号
x1 = A * sin( pi * 0.165 * (0:199) );
然後将 信号 與 高斯白噪聲疊加 :
% 信号 + 高斯白噪聲
x = x1 + xn;
5、求自相關函數及功率
求自相關函數 , 使用 xcorr 函數 ;
% 求 x 的 自相關函數 , 長度為2N-1
y = xcorr(x, x);
求信号功率 :
% 功率 : 自相關函數 幅度 求平均
% 自相關函數 就是 200 個功率之和
y = y / 200;
6、matlab 完整代碼
matlab 完整代碼 :
% 清除之前的變量或記憶體
clear;
% 生成 高斯白噪聲 序列 , 均值 0 , 方差 1
% 生成的 高斯白噪聲 序列 是一個 有 200 個元素的行向量
xn = randn(1,200);
% 設定 信噪比
SNR = 7;
% 根據 信噪比 計算信号幅度
A = sqrt( 2 * 10^(SNR/10) );
% 根據 Asinωn 産生 200 個信号
x1 = A * sin( pi * 0.165 * (0:199) );
% 信号 + 高斯白噪聲
x = x1 + xn;
% 求 x 的 自相關函數 , 長度為2N-1
y = xcorr(x, x);
% 功率 : 自相關函數 幅度 求平均
% 自相關函數 就是 200 個功率之和
y = y / 200;
%建立幕布
figure;
%繪制 "輸出序列" 圖像 , 點用上三角表示
plot(y);
% 打開網格
grid on;
執行結果 :