武漢網(wǎng)絡推廣有哪些公司鄂爾多斯seo
文章目錄
- 【 1. 信噪比 】
- 【 2. 功率歸一化 】
- 2.1 實信號+實噪聲
- 2.2 實信號+復噪聲
- 【 3. 能量歸一化 】
- 3.1 實信號+實噪聲
- 3.2 實信號+復噪聲
- 【 4. 小結 】
【 1. 信噪比 】
- 信噪比公式 1 : S N R = 10 ? l o g 10 P s P n 信噪比公式1:SNR=10*log_{10}\frac{P_s}{P_n} 信噪比公式1:SNR=10?log10?Pn?Ps??其中, P s P_s Ps? 和 P n P_n Pn? 分別指 信號的平均功率、噪聲的平均功率。
- 當信號和噪聲的長度相等為N時,根據(jù)平均功率的公式 P s = E s / N P_s=E_s/N Ps?=Es?/N 以及 P n = E n / N P_n=E_n/N Pn?=En?/N,上式可化為: 信噪比公式 2 : S N R = 10 ? l o g 10 E s E n 信噪比公式2:SNR=10*log_{10}\frac{E_s}{E_n} 信噪比公式2:SNR=10?log10?En?Es??其中, E s E_s Es? 和 E n E_n En? 分別指 信號的平均功率、噪聲的平均功率。
- 因此,可通過兩種方式生成 一定信噪比的信號。
【 2. 功率歸一化 】
平均功率(均方值) = 均值(直流功率) + 方差(交流功率) 平均功率(均方值)=均值(直流功率)+方差(交流功率) 平均功率(均方值)=均值(直流功率)+方差(交流功率)
- 一般令信號的均值為0,方差為1,即平均功率為1。
2.1 實信號+實噪聲
clc; % 清空命令行
clear; % 清空變量
close all; % 關閉所有窗口%% [1、參數(shù)設置]
N=1e6; % 數(shù)據(jù)點數(shù)
SNR_dB=20; % 信噪比(dB形式)
SNR_Power=10.^(SNR_dB/10); % 功率比
Ps=1; % 信號功率,為1時其dBW形式為0。
Pn=Ps./SNR_Power; % 噪聲功率%% [2、生成信號]
sn=round(rand(1,N)); % 原信號: 0,1序列sn
sn1=round((sn-1/2)*2); % 原信號:-1,1序列sn1,均值為0,方差為1
var(sn1);
fa=50; % 信號頻率
fs=150;Ts=1/fs; % 采樣周期及采樣頻率
t=(1:N)*Ts; % 時間刻度
sn=7+2*sin(2*pi*t+3*pi/4); % 一個固定信號
% mean(sn) % 均值=6.999
% var(sn) % 方差=2
sn1=sn./std(sn); % 歸一化 均值為0
sn1=sn1-mean(sn1); % 歸一化 方差為1
% mean(sn1)
% var(sn1)%1、wgn函數(shù),返回 高斯白噪聲
%%% 前兩個參數(shù)指 維度
%%% 第三個參數(shù)指 噪聲的功率(dBW)
if 0 noise=wgn(1,N,10*log10(Pn));xn=sn1+noise;
end
%2、awgn函數(shù),生成 輸入信號+高斯白噪聲
%%% 第一個參數(shù)指 輸入信號
%%% 第二個參數(shù)指 信噪比(dBW)
%%% 第三個參數(shù)是 一個數(shù)值時,代表輸入信號的功率dBW;是"measured"的時,在添加噪聲前會自動計算輸入信號的功率;
%%% 當只有前兩個信號時,代表默認輸入信號的功率為 0 dBW(功率為1)。
if 0 xn=awgn(sn1,SNR_dB,"measured");noise=xn-sn1;
end
%3、randn函數(shù),返回 均值為0方差為1且高斯分布的噪聲
%%% a+b*randn(m,n)的均值為0,方差為b^2。
if 1 noise = sqrt(Pn)*randn(1,N);xn=sn1+noise;
end%% [3、結果測試]
sigPower = sum(abs(sn1).^2)/length(sn1); % 求出信號功率
noisePower=sum(abs(noise).^2)/length(noise); % 求出噪聲功率
SNR_10=10*log10(sigPower/noisePower); % 由信噪比定義求出信噪比,單位為db
disp(['理論信噪比(dB)=',num2str(SNR_dB),]);
disp(['仿真信號功率(W)=',num2str(sigPower)]);
disp(['仿真噪聲功率(W)=',num2str(noisePower)]);
disp(['仿真信噪比(dB)=',num2str(SNR_10)]);
2.2 實信號+復噪聲
clc; % 清空命令行
clear; % 清空變量
close all; % 關閉所有窗口%% [1、參數(shù)設置]
N=1e6; % 數(shù)據(jù)點數(shù)
SNR_dB=20; % 信噪比(dB形式)
SNR_Power=10.^(SNR_dB/10); % 功率比
Ps=1; % 信號功率,為1時其dBW形式為0。
Pn=Ps./SNR_Power; % 噪聲功率%% [2、生成信號]
fa=50; % 信號頻率
fs=150;Ts=1/fs; % 采樣周期及采樣頻率
t=(1:N)*Ts; % 時間刻度
sn=7+2*sin(2*pi*t+3*pi/4);%
% mean(sn) % 均值=6.999
% var(sn) % 方差=2
sn1=sn./std(sn); % 歸一化 均值為0
sn1=sn1-mean(sn1); % 歸一化 方差為1
% mean(sn1)
% var(sn1)%1、wgn函數(shù),返回 高斯白噪聲
%%% 前兩個參數(shù)指 維度
%%% 第三個參數(shù)指 噪聲的功率(dBW)
if 0 noise=wgn(1,N,10*log10(Pn/2))+1i*wgn(1,N,10*log10(Pn/2));xn=sn1+noise;
end
%2、awgn函數(shù),返回 輸入信號+高斯白噪聲
%%% 第一個參數(shù)指 輸入信號
%%% 第二個參數(shù)指 信噪比(dBW)
%%% 第三個參數(shù)是 一個數(shù)值時,代表輸入信號的功率dBW;是"measured"的時,在添加噪聲前會自動計算輸入信號的功率;
%%% 當只有前兩個信號時,代表默認輸入信號的功率為 0 dBW(功率為1)。
if 0xn1=awgn(sn1,SNR_dB+10*log10(2));noise1=xn1-sn1;xn2=awgn(sn1,SNR_dB+10*log10(2));noise2=xn2-sn1;noise=noise1+noise2;
end
%3、randn函數(shù),返回 均值為0方差為1且高斯分布的噪聲
%%% a+b*randn(m,n)的均值為0,方差為b^2。
if 1 noise = sqrt(Pn/2)*(randn(1,N)+1i*randn(1,N));xn=sn1+noise;
end%% [3、結果測試]
sigPower = sum(abs(sn1).^2)/length(sn1); % 求出信號功率
noisePower=sum(abs(noise).^2)/length(noise); % 求出噪聲功率
SNR_10=10*log10(sigPower/noisePower); % 由能量比求出信噪比,單位為db
disp(['理論信噪比(dB)=',num2str(SNR_dB)]);
disp(['仿真信號功率(W)=',num2str(sigPower)]);
disp(['仿真噪聲功率(W)=',num2str(noisePower)]);
disp(['仿真信噪比(dB)=',num2str(SNR_10)]);
【 3. 能量歸一化 】
3.1 實信號+實噪聲
%%% 實信號+實噪聲,能量歸一化,指定信號能量為1
%%% 驗證通過
clc; % 清空命令行
clear; % 清空變量
close all; % 關閉所有窗口%% [1、參數(shù)設置]
N=1e6; % 數(shù)據(jù)點數(shù)
SNR_dB=20; % 信噪比(dB形式)
Es=1; % 信號能量
SNR_Ratio=10.^(SNR_dB/10); % 能量比(信號能量/噪聲能量)
En=Es./SNR_Ratio; % 噪聲能量
temp=Es./10.^(SNR_dB/20); % 加在噪聲變量前的%% [2、生成信號]
fa=50; % 信號頻率
fs=150;Ts=1/fs; % 采樣周期及采樣頻率
t=(1:N)*Ts; % 時間刻度
sn=7+2*sin(2*pi*t+3*pi/4); % 一個固定信號,均值=6.999,方差=2
% mean(sn)
% var(sn)
sn1=sn./norm(sn); % 均值為0方差為0,功率為0,總能量為1
% mean(sn1)
% var(sn1)%% [3、加噪]
if 1noise = randn(1,N); % 均值為0+0i,方差為1noise=noise/norm(noise); % 均值為0+0i,方差為0,能量為1noise=temp*noise;xn=sn1+noise;
end%% [4、結果測試]
sigPower = sum(abs(sn1).^2); % 求出信號能量
noisePower=sum(abs(noise).^2); % 求出噪聲能量
SNR_10=10*log10(sigPower/noisePower); % 由能量比求出信噪比,單位為db
disp(['理論信噪比(dB)=',num2str(SNR_dB)]); %
disp(['仿真信號能量(W)=',num2str(sigPower)]);
disp(['仿真噪聲能量(W)=',num2str(noisePower)]);
disp(['仿真信噪比(dB)=',num2str(SNR_10)]);
3.2 實信號+復噪聲
%%% 實信號+復噪聲,能量歸一化,指定信號能量為1
%%% 3種方式添加信噪比
%%% 驗證通過
clc; % 清空命令行
clear; % 清空變量
close all; % 關閉所有窗口%% [1、參數(shù)設置]
N=1e6; % 數(shù)據(jù)點數(shù)
SNR_dB=20; % 信噪比(dB形式)
Es=1; % 信號能量
SNR_Ratio=10.^(SNR_dB/10); % 能量比(信號能量/噪聲能量)
En=Es./SNR_Ratio; % 噪聲能量
temp=Es./10.^(SNR_dB/20); % 加在噪聲變量前的%% [2、生成信號]
fa=50; % 信號頻率
fs=150;Ts=1/fs; % 采樣周期及采樣頻率
t=(1:N)*Ts; % 時間刻度
sn=7+2*sin(2*pi*t+3*pi/4); % 一個固定信號,均值=6.999,方差=2
% mean(sn)
% var(sn)
sn1=sn./norm(sn); % 均值為0方差為0,功率為0,總能量為1
% mean(sn1)
% var(sn1)%% [3、加噪]
% randn函數(shù),返回 均值為0方差為1且高斯分布的噪聲
%%% a+b*randn(m,n)的均值為0,方差為b^2。
if 1noise = randn(1,N)+1i*randn(1,N); % 均值為0+0i,方差為2noise=noise/norm(noise); % 均值為0+0i,方差為0,能量為1noise=temp*noise;xn=sn1+noise;
end%% [4、結果測試]
sigPower = sum(abs(sn1).^2); % 求出信號能量
noisePower=sum(abs(noise).^2); % 求出噪聲能量
SNR_10=10*log10(sigPower/noisePower); % 由能量比求出信噪比,單位為db
disp(['理論信噪比(dB)=',num2str(SNR_dB)]); %
disp(['仿真信號能量(W)=',num2str(sigPower)]);
disp(['仿真噪聲能量(W)=',num2str(noisePower)]);
disp(['仿真信噪比(dB)=',num2str(SNR_10)]);
【 4. 小結 】
- 按照功率的形式生成具有一定信噪比的信號時,需要讓 信號/噪聲 其中一個的功率歸一化即功率為1,使其均值為0方差為1,另一個 信號/噪聲 則按照信噪比生成。
- 按照能量的形式生成具有一定信噪比的信號時,若要讓 信號/噪聲 其中一個的能量歸一化即能量為1,可通過norm函數(shù)讓其均值為0方差為0能量為1,另一個 噪聲/信號 則按照信噪比生成。