模糊关系合成运算的Matlab实现

模糊关系合成运算的Matlab实现
最近课程学到模糊数学,⾥⾯有关于模糊关系合成运算,传递闭包的概念,⼗分不好理解,本来想⼿算⼏个例⼦来理解的,结果算到⼀半就烦了还⼗分容易算错,于是我就打算⽤matlab编写⼀个。
这⾥就不讲什么是模糊关系合成运算了。百度上能搜到的我这⾥就不赘述了,⽹上也有很多关于传递闭包的解释,都⽐较通俗易懂。我看到教材求传递闭包的⽅法就是模糊矩阵反复⾃乘,当结果t(.R)不改变的时候即为传递闭包的值。
那么⾸先要编程的就是如何算模糊关系合成运算,也有⼈称为模糊矩阵乘积,算法是“先取⼩后取⼤”。⽤max()函数,min()函数就能搞定,最后再根据矩阵运算规则。于是有
教学论坛function [R]=fuzzymm(A,B)
%模糊矩阵合成运算的Matlab实现
%运算规则,先"取⼩后取⼤"
%输⼊必须为⼆阶矩阵A为m⾏n列, B为n⾏p列;
[m,n]=size(A);[q,p]=size(B);%获得输⼊矩阵的维度信息
反修正主义if n~=q
disp('第⼀个矩阵的列数和第⼆个矩阵的⾏数不相同!');
else
R=zeros(m,p);%初始化矩阵
for k =1:m
for j=1:p
temp=[];
for i =1:n
Min =min(A(k,i),B(i,j));%求出第i对的最⼩值
temp=[temp Min];%将求出的最⼩值加⼊的数组中
end
R(k,j)=max(temp);
end
end
end
end
我们来测试⼀下
clc
clear all;
A=[0.30.70.2;1,0,0.4;0,0.5,1;0.6,0.7,0.8];
B=[0.1,0.9;0.9,0.1;0.6,0.4];
[R]=fuzzymm(A,B);
disp(R)
得到的结果
0.70000.3000
金基德时间
0.40000.9000
0.60000.4000
0.70000.6000
大地生命结果正确!
那么求传递闭包的只需将传⼊的矩阵设为相同就可以了!
那么模糊相似矩阵的传递闭包怎么求呢,只需要反复调⽤函数,当结果不改变时,即为该模糊相似矩阵的传递闭包。
例如:南昌七城会
[1 0.1 0.8 0.5 0.3;
0.1 1 0.1 0.2 0.4;移动彩信平台
0.8 0.1 1 0.3 0.1;
0.5 0.2 0.3 1 0.6;
0.3 0.4 0.1 0.6 1]
clc
clear all
R=[10.10.80.50.3;0.110.10.20.4;0.80.110.30.1;0.50.20.310.6;0.30.40.10.61]; [tR]=fuzzymm(R,R)
于是有
再次相乘
再次相乘,发现结果不改变
故求得传递闭包

本文发布于:2024-09-22 03:34:08,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/344921.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:运算   矩阵   结果   传递
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议