毕设示例3:测试mystepfcm函数

测试mystepfcm函数:迭代过程中的每一次迭代

示例代码如下:

% 测试mystepfcm函数:
% function [U_new, center, obj_fcn] = mystepfcm(data, U, cluster_n, expo,hg)
%   迭代过程中的每一步迭代。
%   输入:data是要被聚类的矩阵,这里是灰度级矩阵。 U是划分矩阵。
%         cluster_n是要聚类的类别数。 expo是矩阵的指数。 
%         hg是每一个灰度级的像素个数占总像素个数的百分比。
%   输出: U_NEW是新的划分矩阵。center是聚类中心。obj_fcn是目标函数。
clc,clear all;
cluster_n = 3;
data = 0 : 4
U = inithcm(cluster_n, length(data))

b = imread('CT.tif');
[m1,n1]=size(b) %显示矩阵b的信息
[pxy,xb]=imhist(b,5 ) %在0~255每一个灰度级上的像素的个数
hg=pxy/m1/n1 %每个灰度级的像素个数/宽度/高度=每个灰度级上的像素占总像素的百分比
b=double(b);

expo = 2;
mf = U.^expo       % 给矩阵U指数化(每个元素都平方)
data = data'
center = mf*(data.*hg)./(((ones(size(data, 2), 1))*(mf*hg))) % 新聚类中心

dist = distfcm(center, data)
obj_fcn = sum(sum((dist.^2).*mf))  % 目标函数

tmp = dist.^(-2/(expo-1))      % calculate new U, suppose expo != 1
aaa = ones(cluster_n, 1)*sum(tmp)  %为了观察结果自己引入
U_new = tmp./(ones(cluster_n, 1)*sum(tmp)) %新的划分矩阵  对tpm进行归一化
%(原代码)data = 0 : 255
%(原代码)[pxy,xb]=imhist(b)

输出结果如下:

data =
     0     1     2     3     4

U =
    0.3092    0.4072    0.4541    0.0748    0.2945
    0.2818    0.4344    0.4383    0.3167    0.5103
    0.4090    0.1584    0.1076    0.6085    0.1952

m1 =
   512

n1 =
   512

pxy =
      142161
        5345
       40985
       49151
       24502

xb =
         0
   63.7500
  127.5000
  191.2500
  255.0000

hg =
    0.5423
    0.0204
    0.1563
    0.1875
    0.0935


mf =
    0.0956    0.1658    0.2062    0.0056    0.0867
    0.0794    0.1887    0.1921    0.1003    0.2604
    0.1673    0.0251    0.0116    0.3702    0.0381


data =
     0
     1
     2
     3
     4

center =
    1.0704
    1.8127
    1.3652

dist =
    1.0704    0.0704    0.9296    1.9296    2.9296
    1.8127    0.8127    0.1873    1.1873    2.1873
    1.3652    0.3652    0.6348    1.6348    2.6348

obj_fcn =
    4.4071

tmp =

    0.8728  201.8642    1.1572    0.2686    0.1165
    0.3043    1.5141   28.5048    0.7094    0.2090
    0.5365    7.4976    2.4816    0.3742    0.1440

aaa =
    1.7137  210.8758   32.1436    1.3521    0.4696
    1.7137  210.8758   32.1436    1.3521    0.4696
    1.7137  210.8758   32.1436    1.3521    0.4696

U_new =
    0.5093    0.9573    0.0360    0.1986    0.2481
    0.1776    0.0072    0.8868    0.5246    0.4451
    0.3131    0.0356    0.0772    0.2767    0.3068

其中,0.8728 / 1.7137 = 0.5093


猜你喜欢

转载自blog.csdn.net/weixin_42072280/article/details/80292925