Matlab实现云模型

云模型

(1) 模型简介如下图所示

Matlab实现云模型_第1张图片

(2) 具体云模型如下图所示

  有原始数据得到云滴得步骤为:
   【1】计算数据Ex En He
     Ex=mean(x(i,:)) En=mean(sqrt(pi/2)*abs(x-Ex))。注意:mean函数包含了求和然后除以n的运算。
   【2】生成Enn x y
     Enn=En+He .X randn(1)。x=Ex+Enn .X randn(1);y=exp( -( x(q) - Ex ) .^ 2 ./ ( 2 .X Enn.^2 ) )。
   【3】返回云滴模型 [ x,y,Ex,En,He ]
Matlab实现云模型_第2张图片
Matlab实现云模型_第3张图片

(3) 云模型特征理解:

  对于普通的n组数据,它们由单纯数字组成,每组数据既无法表现该组的独特数字特征,也无法区别于其他组进行比较。云模型,原理就是使用了数据的独特数字特征,正向可以使用数据的独特数字特征来生成具体的云模型(多个云滴),反向可以根据具体的云模型(多个云滴)来计算出数据的数字特征。可以发现数字特征与云模型(多个云滴)是具有对应的关系的(并非完全不变的对应,因为有随机运算在其中),而是说彼此存在一种一一对应的关系(不严谨的说)。
  那么为什么要利用云模型呢?云模型是将数字特征和定量数据之间进行转换的模型。并且云模型的云滴是有关于数字特征的,即云模型数据(云滴)可以表示原始数据的期望、确定度(集中程度)、随机性(离散程度),这些附加性都是相对原始数据而言。相对数字特征而言,云滴是将确定的性质转换为具体的定量数据。
  引用百度百科:云模型是云的具体实现方法,也是基于云的运算、推理和控制等的基础。它可以表示由定性概念到定量表示的过程(正向云发生器),也可表示由定量表示到定性概念的过程(逆向云发生器)。该模型是处理定性概念与定量描述的不确定转换模型。

(4) 云模型代码示例:

  此题: 原始数据 -> 提取得:数据特征值 -> 正向云生成得:定量云滴。
Matlab实现云模型_第4张图片

% 以下是主函数cloud_main.m
clc;
clear all;
% 每幅图生成N个云滴
N = 1500;
% 射击成绩原始数据,这里数据按列存储所以要转置
Y = [9.5 10.3 10.1 8.1 
10.3 9.7 10.4 10.1 
10.6 8.6 9.2 10.0 
10.5 10.4 10.1 10.1 
10.9 9.8 10.0 10.1 
10.6 9.8 9.7 10.0 
10.4 10.5 10.6 10.3 
10.1 10.2 10.8 8.4 
9.3 10.2 9.6 10.0 
10.5 10.0 10.7 9.9]';

%每一组数据生成一组云滴
for i=1:size(Y,1)
    %函数subplot是将多个图画到一个平面上的工具。
    subplot(size(Y,1)/2,2,i);
    [x,y,Ex,En,He]=f2(Y(i,:),N);
    %将在第i副图上绘图
    plot(x,y,'r.');
    %为坐标轴命名
    xlabel('射击成绩分布/环');
    ylabel('确定度');
    %为第i副图设置标题  num2str函数的功能是:把数值转换成字符串
    title(strcat('第',num2str(i),'人射击云模型还原图谱'));
    %axis( [xmin xmax ymin ymax] ) 设置当前坐标轴 x轴 和 y轴的限制范围
    axis([8,12,0,1]);
end

%% 以下是函数f2.m
%根据原始数据y_spor和需要的云滴个数n
%返回n个云滴,x代表n个云滴的数据值,y代表n个云滴的确定度
%Ex En He 分布代表原始数据的 期望 熵 超熵
function [x,y,Ex,En,He] = f2(y_spor,n)
%mean函数作用:求得矩阵的平均值(期望)
Ex=mean(y_spor);
%熵的求法:sum(abs(y_spor-Ex)).*sqrt(pi/2)
En=mean(sqrt(pi/2).*abs(y_spor-Ex));
%超熵的求法:sqrt(S.^2-En.^2) var函数作用:求得矩阵方差S^2
He=sqrt(var(y_spor)-En.^2);
for i=1:n
    %生成以En为期望 以He^2为方差的正态随机数Enn
    %randn(m)生成m行m列的标准正态分布的随机数或矩阵的函数
    Enn=En+randn(1).*He;
    %生成以Ex为期望,以Enn^2为方差的正态随机数x
    x(i)=Ex+randn(1)*Enn;
    %计算隶属度(确定度)
    y(i)=exp(-(x(i)-Ex).^2/(2*Enn.^2));
end
end

(5)云模型分析:

  四个云模型如下图所示。分析的有限度从高到低为:
   期望 -> 确定度(隶属度) -> 随机性(离散程度)
  期望表示云滴或数据均值,期望的确定度为1,所有看模型的期望就是看模型确定度为1的点的值(即x值)为多少,如第二人期望大概为9.92.。而确定度表示倾向的稳定程度,在图谱上的表现形式是云滴是否集中。而随机性就直接看离散程度就是了。
Matlab实现云模型_第5张图片

Matlab实现云模型_第6张图片

(6)拓展链接:

axis函数
subplot函数

你可能感兴趣的:(学习-总结,matlab)