程序段(1):信噪比程序(基于python或matlab的程序编写)

基于matlab信噪比程序

% 计算信噪比函数
% I :original signal
% In:noisy signal(ie. original signal + noise signal)
% 信噪比的定义为 :
% SNR=信号能量/噪声能量=(纯信号)^2/(带噪信号-纯信号)^2
snr=0;
Ps=sum((I-(mean(I))).^2);%signal power
Pn=sum((I-In).^2); %noise power
snr=10*log10(Ps/Pn); % 其中I是纯信号,In是带噪信号,snr是信噪比

基于matlab信噪比函数

% This function calculates the snr of a signal with reference to original signal. SNR can be calculated for 1-D/2-D/3-D signals.
% output: snr-> snr in dB
% input:  
% 	orgSig-> original 1-D/2-D/3-D signal (or reference signal)
% 	recSig-> reconstructed (1-D/2-D/3-D) signal/ signal obtained from the experiment/ signal, of which snr is to be calculated with reference to original signal.
% 	boun-> boun is the boundary left at the corners for the snr calculation.  default value = 0

function snr = calSNR(orgSig,recSig,varargin)
if isempty(varargin)
    boun = 0;
else boun = varargin{1};
end
if size(orgSig,2)==1       % if signal is 1-D
    orgSig = orgSig(boun+1:end-boun,:);
    recSig = recSig(boun+1:end-boun,:);
else                       % if signal is 2-D or 3-D
    orgSig = orgSig(boun+1:end-boun,boun+1:end-boun,:);
    recSig = recSig(boun+1:end-boun,boun+1:end-boun,:);
end
sigEner = norm(orgSig(:))^2;
errEner = norm(orgSig(:)-recSig(:))^2;
snr = 10*log10(sigEner/errEner);

基于python的信噪比计算函数

def snr_out(signal_source,signal_source_noise):
  signal_noise = signal_source - signal_source_noise
  mean_signal_source = np.mean(signal_source)
  signal_source = signal_source - mean_signal_source
  snr = 10 * math.log(np.sum(signal_source**2) / np.sum(signal_noise**2),10)
  return snr
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值