云模型属于不确定性人工智能范畴,主要用于定性与定量之间的相互转换,自然界中的不确定性从属性角度来说主要有随机性和模糊性。“云”或者“云滴”是云模型的基本单元,“云”是指其在论域上的一个分部,可以用联合概率的形式(x,µ)来类比。基本的定义如下:设X是一个普通集合,X={x} , 称为论域。关于论域X中的模糊集合A,是指对于任意元素x都存在一个有稳定倾向的随机数Ua(x),叫做x对A 的隶属度。如果论域中的元素是简单有序的,则可以看作是基础变量,隶属度在X上的分布叫做隶属云;如果论域中的元素不是简单有序的,而根据某个法则f,可将X映射到另一个有序的论域X上,X中的一个且只有一个x和x对应,则X为基础变量,隶属度在X上的分布叫做隶属云。
云模型用三个数据来表示其特征:
期望:云滴在论域空间分部的期望,一般用符号Ex表示;
熵:不确定性程度,有离散程度和模糊程度共同决定,一般用符号En表示;
超熵:用来度量熵的不确定性,亦即熵的熵,一般用符号He表示。
云有两种发生器,正向云发生器和逆向云发生器,分别用来生成足够的云滴和计算云滴的云数字特征(Ex,En,He)。
正向云发生器的触发机制如下:
1、生成以En为期望,以He为方差的正态随机数En;
2、生成以Ex为期望,以En`2为方差的正态随机数x;
3、计算隶属度即确定度:
4、重复1—3步骤,直到生成足够的云滴。
逆向云发生器是用来计算云滴的数字特征(Ex,En,He),无需确定度信息的逆向发生器,假设样本x的容量为n,其触发机制如下:
案例如下:
%云模型的主函数
clc;
clear all;
close all;
%每幅图生成1500个云滴
N=1500;
%射击数据如下
Y=[9.5 10.2 9.9 8.6
10.3 9.7 10.1 10.1
10.6 8.6 10.4 10
10.5 10.4 9.2 10.1
10.9 9.9 10.1 10.3
8.9 8.9 9.8 10
9.9 10.4 8.7 8.9
10.9 10.2 9.9 9.9
9.3 10.3 10.8 9.7
10.5 10 8.9 10.5
]';
for i=1:size(Y,1)
subplot(size(Y,1)/2,2,i)
[x,y,Ex,En,He]=cloud_compute(Y(i,:),N);
plot(x,y,'r.');
xlabel('射击成绩分布/环');
ylabel('确定度');
title(strcat('第',num2str(i),'人射击云模型还原图谱'));
axis([8,12,0,1]);
end
function [x,y,Ex,En,He]=cloud_compute(y,n)
Ex=mean(y);
En=mean(abs(y-Ex)).*sqrt(pi./2);
He=sqrt(var(y)-En.^2);
for q=1:n
Enn=randn(1).*He+En;
x(q)=randn(1).*Enn+Ex;
y(q)=exp(-(x(q)-Ex).^2/(2.*Enn.^2));
end
x;
y;
1.先明白strcat函数的定义:
strcat 即 Strings Catenate,横向连接字符串。语法
combinedStr= strcat(s1, s2, …, sN)
描述
将数组 s1,s2,…,sN 水平地连接成单个字符串,并保存于变量combinedStr中。如果任一参数是元胞数组,那么结果 combinedStr 是一个元胞数组,否则,combinedStr是一个字符数组。
其实它的作用很简单就是将多个字符连接成单个字符串
2.size(X,1),返回矩阵X的行数;
size(X,2),返回矩阵X的列数;
N=size(X,2),就是把矩阵X的列数赋值给N
axis off;% 去掉坐标轴
axistight;% 紧坐标轴
axisequal;% 等比坐标轴
axis([-0.1, 8.1, -1.1, 1.1]);% 坐标轴的显示范围
% gca: gca, h=figure(…);
set(gca,’XLim’,[3 40]);% X轴的数据显示范围
set(gca,’XTick’,[-3.14,0,3.14] );% X轴的记号点
set(gca,’XTicklabel’,{‘-pi’,’0’,’pi’});% X轴的记号
set(gca,’XTick’, []);% 清除X轴的记号点
set(gca,’XGrid’,’on’);% X轴的网格
set(gca,’XDir’,’reverse’);% 逆转X轴
set(gca,’XColor’,’red’);% X轴的颜色
1. axis([xmin xmax ymin ymax])
设置当前图形的坐标范围,分别为x轴的最小、最大值,y轴的最小最大值
2. V=axis
返回包含当前坐标范围的一个行向量
3. axis auto
将坐标轴刻度恢复为自动的默认设置
4. axis manual
冻结坐标轴刻度,此时如果hold被设定为on,那么后边的图形将使用与前面相同的坐标轴刻度范围
5. axis tight
将坐标范围设定为被绘制的数据范围
6. axis fill
这是坐标范围和屏幕的高宽比,使得坐标轴可以包含整个绘制的区域。该选项只有在PlotBoxaApectRatio或DataAspectRatioMode被设置为‘manual’模式才有效
7. axis ij
将坐标轴设置为矩阵模式。此时水平坐标轴从左到有取值,垂直坐标从上到下
8. axis xy
将坐标设置为笛卡尔模式。此时水平坐标从左到右取值,垂直坐标从下到上取值
9. axis equal
设置屏幕高宽比,使得每个坐标轴的具有均匀的刻度间隔
10. axis square
将坐标轴设置为正方形
11. axis normal
将当前的坐标轴框恢复为全尺寸,并将单位刻度的所有限制取消
12. axis vis3d
冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
13. axis off
关闭所有的坐标轴标签、刻度、背景
14. axis on
打开所有的坐标轴标签、刻度、背景
axis([xmin,xmax,ymin,ymax,zmin,zmax])