![d28914d2aa3078819f8a3a2d1cb1198d.png](https://i-blog.csdnimg.cn/blog_migrate/192deae150167562bfd3153a4f89b1fe.png)
最近课程学到模糊数学,里面有关于模糊矩阵乘法,传递闭包的概念,十分不好理解,本来想手算几个例子来理解的,结果算到一半就烦了还十分容易算错,于是我就打算用matlab编写一个。
这里就不讲什么是模糊矩阵的乘法了。百度上能搜到的我这里就不赘述了,网上也有很多关于传递闭包的解释,都比较通俗易懂。我看到教材求传递闭包的方法就是模糊矩阵反复自乘,当结果t(.R)不改变的时候即为传递闭包的值。
那么首先要编程的就是如何算模糊矩阵乘法,也叫模糊矩阵合成运算,算法是“先取小后取大”。用max()函数,min()函数就能搞定,最后再根据矩阵运算规则。于是有
function
我们来测试一下
clc
clear all;
A=[0.3 0.7 0.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)
结果正确!
那么求传递闭包的只需将传入的矩阵设为相同就可以了!
那么模糊相似矩阵的传递闭包怎么求呢,只需要反复调用函数,当结果不改变时&