FuncLrzFit

所属分类:matlab编程
开发工具:matlab
文件大小:1KB
下载次数:34
上传日期:2017-11-24 09:06:21
上 传 者abolide
说明:  采用matlab进行洛伦兹拟合的函数,具体拟合采用了最小二乘法。
(This matlab function fits lrz, and it is very useful.)

文件列表:
FuncLrzFit.m (1492, 2017-11-23)

该函数采用最小二乘法进行拟合洛伦兹函数,最终效果不错,请放心参考。 function LrzFreq = FuncLrzFit(BotdrFreq, AdcRate, FitPtsNum) temp = size(BotdrFreq); FftPtsNumHalf = temp(1,2);%%外部输入的点数,必须为FFT点数的一半。 PeakIndex = 0; PeakValue = 0; for i = 1:FftPtsNumHalf if(BotdrFreq(i)>PeakValue) PeakValue = BotdrFreq(i); PeakIndex = i; end end if(PeakIndex < (fix(FitPtsNum/2)+1)) PeakIndex = (fix(FitPtsNum/2)+1); else if(PeakIndex > (FftPtsNumHalf - fix(FitPtsNum/2))) PeakIndex = (FftPtsNumHalf - fix(FitPtsNum/2)); end end max_index = (PeakIndex-fix(FitPtsNum/2)) : 1 : (PeakIndex-fix(FitPtsNum/2)+FitPtsNum-1); max_data = BotdrFreq((PeakIndex-fix(FitPtsNum/2)) : (PeakIndex-fix(FitPtsNum/2)+FitPtsNum-1)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% a=sum(max_index); b=sum(max_index .* max_index); c=sum(max_index .* max_index .* max_index); d=sum(max_index .* max_index .* max_index.* max_index); e=sum(max_data); f=sum(max_index .* max_data); g=sum(max_index .* max_index .* max_data); m=(FitPtsNum*d-b*b)/(FitPtsNum*g-b*e); n=(FitPtsNum*c-a*b)/(FitPtsNum*f-a*e); p=(FitPtsNum*b-a*a)/(FitPtsNum*f-a*e); q=(FitPtsNum*c-a*b)/(FitPtsNum*g-b*e); LrzFreq=((n-m)/(2*(p-q)))*AdcRate/(FftPtsNumHalf*2); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

近期下载者

相关文件


收藏者