云模型是由中国工程院院士李德毅提出的,处理定性概念与定量描述的不确定转换模型。
简单来说就是云就是一个种群,一个分布,而云滴就是其中的一个数据,一个具体的点,而这个点出现在这个分布中是有一定的概率的。
云模型用3个数据来表示其特征:
期望:Ex,云滴在空间分布的期望。
熵:不确定性程度,用En表示
超熵 :用来表示熵的不确定性,即熵的熵.
云有两种发生器,即一种生成足够的云滴,另一种是计算特征(后一种好比压缩文件成几个数学公式,而这几个数学公式就可以表示这个云的状态,前一种就是解压文件,主要是用于画图)
正向发生器:(根据Ex,En,He获得图像)
1.生成以En为期望,以He为方差的正态随机数Enn; %Enn=rand(1)*He+En
2,生成以Ex为期望,以Enn为方差的正态随机数x. %x=rand(1)*Enn+Ex
3.计算确定度=exp(-(x-Ex)^2/2Enn^2)
反向发生器:(根据图像获得En,He,Ex)
1,Ex=X的平均值
2, En=|x-Ex|的平均值*sqrt(pi/2)
3, He=sqrt(s^2-En^2);
例题:针对给定的步枪射击的成绩比较选手的状态
cloud_transform.m
function [x,y,Ex,En,He]=cloud_transform(y_spor,n)
Ex=mean(y_spor);
En=mean(abs(y_spor-Ex)).*sqrt(pi/2);
He=sqrt(var(y_spor)-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;
命令行程序:
>> data.m;
>> N=1000;
>> for i= 1:size(Y,1)
subplot(size(Y,1)/2,2,i)
[x,y,Ex,En,He]=cloud_transform(Y(i,:),N);
plot(x,y,'r');
xlabel('射击成绩分布/环');
ylabel('确定度');
title(strcat('第',num2str(i),'人射击云模型还原图谱'));
axis([8,12,0,1]);
end
数据 data.m
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]';
效果如下:
再比如画出下个图形.
>> Ex=0;
>> En=1;
>> He=0.1;
>> N=3000;
>> 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
>> axis([-4,5,0,1]);
>> plot(x,y,'r');