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 ]
在这里插入图片描述
在这里插入图片描述

(3) 云模型特征理解:

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

(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.。而确定度表示倾向的稳定程度,在图谱上的表现形式是云滴是否集中。而随机性就直接看离散程度就是了。
在这里插入图片描述

在这里插入图片描述

(6)拓展链接:

axis函数
subplot函数

  • 14
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
模型评估是一种基于模糊数学理论的评估方法,可以用于处理不确定性的问题。下面是一个简单的模型评估的Matlab代码示例: ```matlab % 生成隶属函数 x = 0:0.01:1; % 自变量范围 a = 0.3; % 隶属函数的起点 b = 0.7; % 隶属函数的顶点 c = 1; % 隶属函数的终点 alpha = 2; % 的切变参数 y = (x-a).^alpha .* (b-x).^alpha .* (c-x).^alpha; % 可视化隶属函数 plot(x, y); xlabel('x'); ylabel('Membership Value'); title('Cloud Membership Function'); % 生成随机样本 n = 100; % 样本数量 minVal = 0; % 样本取值范围的最小值 maxVal = 1; % 样本取值范围的最大值 samples = minVal + (maxVal - minVal) * rand(n, 1); % 计算样本的隶属度 cloudiness = zeros(n, 1); % 初始化隶属度数组 for i = 1:n if samples(i) < a cloudiness(i) = 0; elseif samples(i) < b cloudiness(i) = (samples(i)-a) / (b-a); elseif samples(i) < c cloudiness(i) = (c-samples(i)) / (c-b); else cloudiness(i) = 0; end end % 可视化样本的隶属度 figure; scatter(samples, cloudiness); xlabel('Sample'); ylabel('Cloudiness'); title('Cloudiness of Samples'); % 计算模型评估结果 average = mean(cloudiness); % 平均值 disp(['Average cloudiness: ' num2str(average)]); variance = var(cloudiness); % 方差 disp(['Cloudiness variance: ' num2str(variance)]); ``` 该代码首先生成一个隶属函数,然后生成一组随机样本,并计算每个样本的隶属度。最后,计算样本的平均值和方差作为模型评估的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望—星空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值