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);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
近期下载者:
相关文件:
收藏者: