ø 總體概述
模糊數學已經使用到各個領域,其在影象的分割中也是常用的經典方法,而且實時在其基礎上能有些創新。本文通過兩天來對模糊數學基礎知識學習進行個小的poject鞏固。本文標題兼主要內容為基於模糊等價關係的模糊聚類程式實現。
為什麼要把模糊聚類分析基於模糊等價關係之上呢?模糊等價關係是同時滿足自反性、對稱性和傳遞性的模糊關係,因此必定有如下特性:
(1)自反性:保證關係中元素和元素本身是同一類
(2)對稱性:保證元素a與b同類,則b與a也同類
(3)傳遞性:若a與b同類,b與c同類,則a與c同類
一般的聚類分析流程圖如下
%日期:2012-07-15 %
功能:模糊聚類分析
clc
% 1)
原始矩陣
disp(
'1)原始矩陣')
a = [5 5 3 2;
2 3 4 5;
5 5 2 3;
1 5 3 1;
2 4 5 1]
% 2)
計算相似矩陣m
disp(
'2)計算相似矩陣m')
m = abs_sub(a, 5, 4)
% 3)
計算模糊等價矩陣
disp(
'3)計算模糊等價矩陣')
n = matrix_com(m, 5)
% 4)
λ聚類分析
r = 0.4;
sprintf(
'4)λ聚類分析(λ=%0.1f)', r)
q = cluster(n, r)
ø 下面分步驟實現每個過程中的呼叫函式
(1)獲取原始矩陣 地方
空氣 水
土壤 植被
a 55 3
2 b2 3
4 5c 5
5 23 d
1 53 1
e 24 5
1由上表很容易一一對應獲得矩陣
a = [5 5 3 2;
2 3 4 5;
5 5 2 3;
1 5 3 1;
2 4 5 1]
矩陣的行代表物件,矩陣的列代表物件具有的性質。
(2)計算相似矩陣
方法很多,這裡使用很簡單的絕對值減法,其數學公式如下
代表相似矩陣中的第i行第j列元素,
代表a矩陣的第i行第j列元素。 %
%日期:2012-07-15 %
功能:絕對值減數法計算相對矩陣
function
y = abs_sub(array, m, n);
% array - input array original array
% m - number of objects
% n - number of properties
c = 0.1;
temp = 0;
fori = 1:m
forj = 1:m
fork = 1:n
temp = temp + abs(array(i,k)-array(j,k));
end
y(i,j) = 1 - c*temp;
temp = 0;
end
end
(3)計算模糊等價矩陣
這裡利用離散數學裡面的關係的合成運算方法,通過迭代計算等價矩陣。 %
%日期:2012-07-15 %
功能:模糊矩陣合成計算傳遞閉包
function
y = matrix_com(array, m);
% array - input array original array
% m - number of objects
% n - number of properties
flag = 0;
%是否找到傳遞閉包的標誌
temp = 0;
cnt = 0;
while
~flag
y = temp;
fori=1:m
forj=1:m
temp(i,j) = 0;
fork=1:m if
cnt==0
temp(i,j)=max(temp(i,j),min(array(i,k), array(k,j)));
else
temp(i,j)=max(temp(i,j),min(y(i,k), y(k,j)));
end
end
end
end
cnt = cnt + 1;
ify == temp
flag = 1;%
傳遞閉包已找到
endend
(4)截值聚類分析
很簡單,比如有矩陣
a = [5 5 3 2;
2 3 4 5;
5 5 2 3;
1 5 3 1;
2 4 5 1]
使用截值r=3,則將a矩陣中比3小的值置0,大於等於3的值置1。結果為
a = [1 1 1 0;
0 1 1 1;
1 1 0 1;
0 1 1 0;
0 1 1 0]
使用簡單的matlab程式實現如下 %
%日期:2012-07-15 %
功能:λ聚類分析
function
y = cluster(array, r);
% array -
模糊相似矩陣或模糊等價矩陣
% r -
聚類截距
ifr>1 | r<0
error('
第二個引數必須小於1');
end
len = length(array);
fori=1:len
forj=1:len if
array(i,j)>=r
y(i,j) = 1;
else
y(i,j) = 0;
end
end
end ø
最後通過matlab輸出結果進一步認識整個模糊聚類的過程
1)原始矩陣
a =5 5 3 2
2 3 4 5
5 5 2 3
1 5 3 1
2 4 5 1
2)計算相似矩陣m
m =1 1/10 4/5 1/2 3/10
1/10 1 1/10 1/5 2/5
4/5 1/10 1 3/10 1/10
1/2 1/5 3/10 1 3/5
3/10 2/5 1/10 3/5 1
3)計算模糊等價矩陣
n =1 2/5 4/5 1/2 1/2
2/5 1 2/5 2/5 2/5
4/5 2/5 1 1/2 1/2
1/2 2/5 1/2 1 3/5
1/2 2/5 1/2 3/5 1
4)λ聚類分析(λ=0.6)
q =1 0 1 0 0
0 1 0 0 0
1 0 1 0 0
0 0 0 1 1
0 0 0 1 1
所以,當r=0.6時,最終分類結果為,,三組。選擇不同的r值得到不同的分類結果。
等價關係的個數
等價關係 設r為集合a上的關係,如果r是自反的,對稱的,傳遞的,則稱r為a上的等價關係.等價類 設r是集合a上的等價關係,對任意的a in a,令 a r 則稱 a r為元素a關於r的等價類,簡稱為a的等價類,簡記為 a 即 x in a r leftrightarrow in r 所有等價類的集合...
基於webgl的高斯模糊
模糊有很多種,這裡說高斯模糊,高斯模糊會給人一種毛玻璃的感覺.以上三圖分別為原圖,高斯半徑為1.5,高斯半徑4.5 高斯模糊怎麼模糊呢?主要取決於乙個函式 高斯函式,或者正態分佈 對於乙個點,要對他進行模糊,就要選取周圍的點的顏色值,然後將周圍的點按權值相加,就得到了模糊後的點的顏色,而這個權值,就...
基於OpenLayers 的WFS模糊查詢優化
思路 先通過指定乙個featurename欄位,在全表查詢時,返回的資料就會比較小,這樣會提高一些速度。返回資料中,我們取出featureid的值,再通過url進行gml格式的解析,從而得到查詢後返回的全欄位gml資訊。實現 var filter new openlayers.filter.logi...