基本信息
源码名称:粗糙集最优近似集
源码大小:0.31M
文件格式:.zip
开发语言:MATLAB
更新时间:2021-03-19
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
粗糙集相对最优近似集是阈值为0.5时的粗糙集

function [R] = Approximation_set(matrix, U_big)

 

%%ÉÏϽüËÆ¼¯ºÍ½üËÆ¼¯

%ÊäÈ룺Ñù±¾Êý¾Ý¡¢ºÍÊôÐÔ¼¯ºÏ

%Êä³ö£ºR_lowerϽüËÆ¼¯  R_upÉϽüËÆ¼¯ R_0_5 0.5½üËÆ¼¯

[rows,cols] = size(matrix);

 

R_num = 1;

%%ÇóËùÓÐÌõ¼þÊôÐÔÁн»¼¯

U_big_temp = U_big(1);

for condition_cols = 1:cols-2 %Ìõ¼þÊôÐÔÁÐ

    a = 1;   

    for i = 1:length(U_big_temp.value)%Ìõ¼þÊôÐÔȡֵ¸öÊýǰһÁÐ

        for j = 1:length(U_big(condition_cols 1).value)%Ìõ¼þÊôÐÔȡֵ¸öÊýºóÒ»ÁÐ

            Con_c_temp(a).value = intersect(cell2mat(struct2cell(U_big_temp...

                .value(i))),cell2mat(struct2cell(U_big(...

                condition_cols 1).value(j))));%Ìõ¼þÊôÐÔ¼¯ºÏ

 

            if ~isempty(Con_c_temp(a).value)

                a=a 1;

            end

        end   

    end

    U_big_temp.value = Con_c_temp;

end

 

 

 

%%

%ÉϽüËÆ¼¯£ºÓÐÒ»¸ö°üº¬¾Í°üº¬

 

% for i = 1:length(U_big(cols).value)%¾ö²ßÊôÐÔ¸öÊý

%     c = 1;

%     for j = 1:length(U_big_temp.value)%Ìõ¼þÊôÐÔ¸öÊý

%         lia = ismember(cell2mat(struct2cell(U_big_temp.value(j))),...

%             cell2mat(struct2cell(U_big(cols).value(i))));%ÄÜÕÒµ½µÄÔªËØÎª1

%         R_up_num = any(lia);%È·¶¨ËùÓеÄÊý×éÔªËØÊÇΪ·ÇÁ㻹ÊÇ true  ·Ç0Ϊ1

%         

%         if(R_up_num == 1)

%             if c == 1

%               R_up(i).value = cell2mat(struct2cell(U_big_temp.value(j)));  

%             else

%                R_up(i).value = [R_up(i).value,cell2mat(struct2cell(...

%                    U_big_temp.value(j)))];

%             end

%             c = c 1;

%             R_up(i).value = unique(R_up(i).value);%Êý×鯴½ÓºóÈ¥³ýÖØ¸´ÔªËØ

%         end

%     end   

%     

% end

% R(R_num).value = R_up;

% R_num = R_num 1;

%%

%0.5½üËÆ¼¯£º´óÓÚ0.5¸ö°üº¬¾Í°üº¬

accuracy_num = 20;

accuracy = 0.05;

for a = 1:accuracy_num

    R_0_5 = [];

    for i = 1:length(U_big(cols).value)%¾ö²ßÊôÐÔ¸öÊý

        c = 1;

        for j = 1:length(U_big_temp.value)%Ìõ¼þÊôÐÔ¸öÊý

    %         tiaojianshuxing = U_big_temp.value(j)

    %         jueceshuxing = U_big(cols).value(i)

            lia = ismember(cell2mat(struct2cell(U_big_temp.value(j))),...

                cell2mat(struct2cell(U_big(cols).value(i))));%ÄÜÕÒµ½µÄÔªËØÎª1

            [C,~,ic] = unique(lia);

            a_counts = accumarray(ic,1);

            a_counts_sum = sum(a_counts);

            R_0_5_num = 0;%³õʼ»¯R_0_5Ϊ0

            for k = 1:length(C) 

                if C(k) == 1

                   R_0_5_num = a_counts(k)/ a_counts_sum;

                end

            end

 

            if(R_0_5_num >= accuracy * a)

                if c == 1

                   R_0_5(i).value = cell2mat(struct2cell(U_big_temp.value(j)));  

                else

                   R_0_5(i).value = [R_0_5(i).value,cell2mat(struct2cell(...

                       U_big_temp.value(j)))];

                end

                c = c 1;

                R_0_5(i).value = unique(R_0_5(i).value);%Êý×鯴½ÓºóÈ¥³ýÖØ¸´ÔªËØ

            end

        end   

    end

    R(R_num).value = R_0_5;

    R_num = R_num 1;

end

%%

%ϽüËÆ¼¯£ºÍêÈ«°üº¬

% for i = 1:length(U_big(cols).value)%¾ö²ßÊôÐÔ¸öÊý

%     c = 1;

%     for j = 1:length(U_big_temp.value)%Ìõ¼þÊôÐÔ¸öÊý

%         lia = ismember(cell2mat(struct2cell(U_big_temp.value(j))),...

%             cell2mat(struct2cell(U_big(cols).value(i))));

%         R_lower_num = all(lia);%È·¶¨ËùÓеÄÊý×éÔªËØÊÇΪ·ÇÁ㻹ÊÇ true

%         if(R_lower_num == 1)

%             if c == 1

%               R_lower(i).value = cell2mat(struct2cell(U_big_temp.value(j)));  

%             else

%               R_lower(i).value = [R_lower(i).value,cell2mat(struct2cell(...

%                    U_big_temp.value(j)))];

%             end

%             c = c 1;

%         R_lower(i).value = unique(R_lower(i).value);%Êý×鯴½ÓºóÈ¥³ýÖØ¸´ÔªËØ

%         end

%     end   

% end

% R(R_num).value = R_lower;

% R_num = R_num 1;

 

 

end