【数模matlab】数据建模:云模型
【数模matlab】数据建模:云模型
[var1]
用于描述处理不确定性问题
基础概念
基本单位:
“云”或者“云滴”
云的表达方式:
利用联合密度(x,µ)表示,µ是隶属度,µ->1则确定性越高
云模型三个特征:
期望:云滴在论域空间分部的期望,一般用符号Ex表示;
熵:不确定性程度,有离散程度和模糊程度共同决定,一般用符号En表示;
超熵:用来度量熵的不确定性,亦即熵的熵,一般用符号He表示。
云模型触发机制【触发方式直接写成一个funtion】
正向云触发
1、生成以En为期望,以He为方差的正态随机数En;
2、生成以Ex为期望,以En`2为方差的正态随机数x;
3、计算隶属度即确定度:
4、重复1—3步骤,直到生成足够的云滴。
逆向云触发
%云模型的主函数
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;
结果:
结果解读:
由于第4个人在8分的分布比第2个人多很多,故4不如2;
由于第3个人得分比第1个人集中很多,故1不如3
【数模matlab】数据建模:云模型相关教程