matlab程序解释,函数代码如下:

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:36:01
function RP = rpower(datin,P)
% 模糊关系乘法
% RP = rpower(R,P)
% R 为模糊关系,P 为R自乘的次数
error(nargchk(2,2, nargin))
if(P~=floor(P)),error('P must be an integer.');end
[N M] = size(datin);if(N ~= M),error('Matrix length of each demension must agree.');end
RP = datin;
while P>1
for i = 1:N    
for j = 1:N        
RP(i,j) = max(min([RP(i,:);datin(:,j)']));    
end
end
P=P-1;
end

function [RK K] = fuzequmat(R)
% Fuzzy equivalent matrix 求模糊等价矩阵
% [RK K] = fuzequmat(R)
% RK即求得的等价矩阵,K为自乘的次数,R为相似矩阵
error(nargchk(1,1, nargin));
K = 0;
RK = R;
while ~all(all(RK == rpower(RK,2)))   
RK = rpower(RK,2);   
K = K + 1;
end
K = 2*K;

在R*上对U分类,直接利用floor函数
R*λ = floor(R + (1 - λ))

重点解释一下if(P~=floor(P)),error('

if(P~=floor(P)),error('P must be an integer.');end

这句话的意思就是判断P是否为整数。如果P不是整数,比如2.1 or 2.7那么floor(P) = 2, 那么P, floor(P)就不等, 就会报错:P must be an integer

提醒你:P必须是整数

R*λ = floor(R + (1 - λ)) 这句话有误,

要么是R = floor(R + (1 - λ))
要么是λ = floor(R + (1 - λ))

都表示将右边的值(有可能非整数)的约数(最靠近零的一个约数)赋值。比如: floor(2.1) = 2; floor(2.7) = 2

我也不知道,但是我遇到matlab里面不会的就上网搜一下,还有一个很实用的方法就是在command window中用两个数实验一下,看看是什么结果。