?? cldfit.m
字號(hào):
function cld = cldfit(data,l,r)
% % 函數(shù)名:cldfit,云擬合
% % 功能 :對(duì)極值對(duì)應(yīng)位置進(jìn)行云擬合,采用的是云模型的期望曲線
% % 參數(shù) :data為直方圖數(shù)據(jù),大小3*256,第一行為頻率值,第二行為像素值,第三行
% % 極值情況
% % %lm為所選擇極大值,大小2*1,第一行為極大值,第二行為像素值%
% % l,r為左右的范圍,像素值
% % 返回值:cld為云模型,包含三個(gè)參數(shù)(Ex;En;He)
% % Author: aoms, Oct,2008
if(r-l<2)
cld = [0;0;0];
else
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 預(yù)處理:將直方圖數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的樣本點(diǎn)數(shù)據(jù),從而進(jìn)行不確定逆向云變換
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dSegment = data(1,l:1:r);
N = sum(data(1,l:1:r));%%計(jì)算出所有的樣本的個(gè)數(shù)
drp = []; %%將直方圖數(shù)據(jù)轉(zhuǎn)換為N個(gè)云滴構(gòu)成的數(shù)組數(shù)據(jù)
for i=l:1:r
drp = [drp i*ones(1,data(1,i))];
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 根據(jù)數(shù)據(jù)初步由無(wú)確定度信息的逆向云算法估計(jì)出Ex和En,
%% He暫時(shí)設(shè)置為0.01,因?yàn)镠e的信息暫時(shí)沒(méi)有用到
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cld = [0;0;0];
center = (l+r)/2;
Ex = center;
centrMom1 = sum(abs(drp-Ex))/N; %%一階樣本中心矩
% % S2 = var(data(1,:)); %%樣本方差
En = sqrt(pi/2)*centrMom1;
% % He = sqrt(abs(S2 - En^2));
He = 0.01;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (1) 對(duì)初步求的En進(jìn)行進(jìn)一步微調(diào),首先求得期望曲線及其與實(shí)際直方圖之間的誤差
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x = l:1:r;
y = exp(-((x-Ex).^2)./(2*En^2));
dSegment_1 = dSegment/max(dSegment); %%將直方圖歸一化,得dSegment_1
err = y - dSegment_1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (2) 求取誤差的左右側(cè)最大值,err_maxl,err_maxr分別表示左右側(cè)最大誤差
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%獲取左右兩邊誤差序列
err_lseg = err(1:(r-l+2)/2);
err_rseg = err(((r-l+2)/2):(r-l+1));
max_l = max(err_lseg);min_l = min(err_lseg);
max_r = max(err_rseg);min_r = min(err_rseg);
if( abs(min_l) > abs(max_l) )
err_maxl = min_l;
else
err_maxl = max_l;
end
if( abs(min_r) > abs(max_r) )
err_maxr = min_r;
else
err_maxr = max_r;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (3) 分情況進(jìn)行具體的微調(diào)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if(err_maxl<0 & err_maxr < 0 )
En = En+0.01;
elseif(err_maxl > 0 & err_maxr > 0)
En = En-0.01;
elseif(err_maxl < -exp(1) & err_maxr >exp(1))
En = En-0.01;
elseif(err_maxr < -exp(1) & err_maxl >exp(1))
En = En-0.01;
end
cld = [Ex;En;He];
end
clear dSegment;clear N;clear center;
clear centMom1;clear x;clear y;
clear err;clear err_lseg;clear err_rseg;
clear max_l;clear max_r;clear min_l;clear min_r;
clear err_maxl;clear err_maxr;clear t;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -