返回信息流编一个折半搜索法搜索噪声门限的函数可是老是出错,自己想了半天不明白,把代码贴在下面。
function noiseth= halfserch(s,snrtarget)
%折半搜索法搜索噪声门限
%s是带噪信号,snrtarget是目标信噪比,
%调用的SNR_singlech函数是求信噪比函数
s1=s;
x1=max(s);
x2=0;
noiseth=(x1+x2)/2;
f1= find(s1<noiseth);
s1(f1)=0;
snr=SNR_singlech(s1,s);
while (abs(snr-snrtarget)>0.2)
s1=s;
if (snr>snrtarget)
x2=noiseth;
noiseth=(x1+x2)/2;
f1= find(s1<noiseth);
s1(f1)=0;
snr=SNR_singlech(s1,s);
else
x1=noiseth;
noiseth=(x1+x2)/2;
f1=find(s1<noiseth);
s1(f1)=0;
snr=SNR_singlech(s1,s);
end
end
noiseth=(x1+x2)/2;
end
function snr=SNR_singlech(I,In)
% 计算信噪比函数
% I :original signal
% In:noisy signal(ie. original signal + noise signal)
snr=0;
Ps=sum(sum((I-mean(mean(I))).^2));%signal power
Pn=sum(sum((I-In).^2)); %noise power
snr=10*log10(Ps/Pn);
end
运行时老是出不来结果,matlab在调用SNR_singlech函数的Ps=sum(sum((I-mean(mean(I))).^2));%signal power这一行报错,貌似问题出在mean函数上,
求高人指点。
这是一条镜像帖。来源:北邮人论坛 / matlab / #7735同步于 2010/11/21
Matlab机器人发帖
调用一个带mean函数求信噪比的函数老是出错
manzai
2010/11/21镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。