收藏 分销(赏)

粗糙集matlab程序.doc

上传人:人****来 文档编号:4743765 上传时间:2024-10-11 格式:DOC 页数:4 大小:35.51KB 下载积分:5 金币
下载 相关 举报
粗糙集matlab程序.doc_第1页
第1页 / 共4页
粗糙集matlab程序.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
Data2为条件属性, decision2为决策属性 %%%my_test函数实现 clc; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取信息系统文件 file = textread('data2.txt','%s','delimiter','\n','whitespace',''); %读取文件信息,每一行为一个胞元 [m,n]=size(file); %胞元的大小 for i=1:m words=strread(file{i},'%s','delimiter',' ');%读取每个胞元中字符,即分解胞元为新的胞元 words=words';%转置 X{i}=words; end X=X'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [B,num,AT]=my_reduct(X); %信息系统的约简 ind_AT=ind(X); %信息系统的不可等价关系 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%显示约简信息系统 disp('约简后的条件系统为:'); [m,n]=size(B); for i=1:m disp(B{i}); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取决策系统文件 file = textread('decision2.txt','%s','delimiter','\n','whitespace',''); [m,n]=size(file); for i=1:m words=strread(file{i},'%s','delimiter',' '); words=words'; D{i}=words; end D=D'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%决策系统的正域约简 X_D=X; [l,k]=size(X_D{1}); pos_d=pos(X_D,D);%正域 for i=1:m %%%%%%%%%%%%%%正域有问题%%%%%%%%%%%%%%%%%%%%%%%%%%% if(~ismember(num(i),pos_d)) B{i}=''; %若约简后的信息系统B{i}不在正域中则删除该行 end %因为相同的条件得到的决策不一样, end %将在正域规则下约简过的信息系统B连接决策系统D [m,n]=size(B); for i=1:m if(~isequal(B{i},'')) B{i}{1,k+1}=D{i}{1}; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%显示约简决策系统 disp('约简后的决策系统为:'); [m,n]=size(B); for i=1:m disp(B{i}); end -------------------------------------------------------------------------------- %%%%%my_reduct函数实现 function [C,num,reduct_attr]=my_reduct(X) %%%%%y为约简后的cell数组,reduct_attr为可约去的属性 %X为行向量(元素为胞元) clc; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%约简 [m,n]=size(X); [p,k]=size(X{1}); ind_AT=ind(X);%寻找不可等价关系 reduct_attr=[]; %可约去的的属性 num=zeros(m,1);%约简后的信息对应的个体 for i=1:k B=delete_AT(X,i); if(isequal(ind_AT,ind(B))) %若IND(AT-{a}=IND(AT) reduct_attr=union(reduct_attr,i); %则寻找到可约去的属性 X=B; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%剔除重复的行 k=1; for i=1:m if(~isequal(ind_AT{i},[])) C_i=ind_AT{i,1}(1); num(k)=i; C{k,1}=X{C_i}; %返回约简后的信息系统 k=k+1; end end -------------------------------------------------------------------------------- %%%%%ind函数实现 function yy=ind(X) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%寻找不可分辨关系 [m,n]=size(X); k=1; ind_AT=cell(m,1); for i=1:m for j=(i+1):m %潜在问题,如i=m是终止循环,此时若最后一行不为空的话,将漏扫 if(~isequal(X{i},'')) %若X{i}不为空 ind_AT{k}=union(ind_AT{k},i); %不可等价关系赋初值 if(isequal(X{i},X{j})) X{j}=''; %若X{i}==X{j},则删除X{j} ind_AT{k}=union(ind_AT{k},j); %寻找不可等价关系 end end end k=k+1; end -------------------------------------------------------------------------------- %%%delete_AT函数的源代码 function y=delete_AT(X,ATi) % 删除X中第i列的属性值 [m,n]=size(X); [l,k]=size(X{1}); for i=1:m X{i}{ATi}=''; end y=X; -------------------------------------------------------------------------------- %%%%%pos函数实现 function pos_d=pos(X,D)%求决策系统的正域函数 %X为条件属性,D为决策属性 ind_D=ind(D); %求决策属性D的不可等价关系 [m,n]=size(ind_D); ind_X=ind(X); %求信息系统属性X的不可等价关系 low=[]; %存储正域个体的编号 for i=1:m for j=1:m if(~isequal(ind_X{i},[])&&~isequal(ind_D{j},[])) if(ismember(ind_X{i},ind_D{j})) low=union(low,ind_X{i});%由性质Pos_AT(d)=low_AT(X1)Ulow_AT(X2)U... end end end end pos_d=low;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服