matlab中的自定义模糊聚集函数
我正在尝试编写一个自定义的聚合函数,以便在matlab中使用。到目前为止,我得到的是:matlab中的自定义模糊聚集函数,matlab,fuzzy-logic,Matlab,Fuzzy Logic,我正在尝试编写一个自定义的聚合函数,以便在matlab中使用。到目前为止,我得到的是: function y = choquet(x) x=sort(x); m=[1 0.65 0.4]; for i=1 y(i)=(x(i))*m(i); end for i=2:numel(x) y(i)=(x(i)-x(i-1))*m(i); end end 它似乎遵循了matlab网站上的指导原则,但在我的fis中它不是一个聚合函数。(它在命令行中使用正确的输入)。我做错了什么?(此时仅
function y = choquet(x)
x=sort(x);
m=[1 0.65 0.4];
for i=1
y(i)=(x(i))*m(i);
end
for i=2:numel(x)
y(i)=(x(i)-x(i-1))*m(i);
end
end
它似乎遵循了matlab网站上的指导原则,但在我的fis中它不是一个聚合函数。(它在命令行中使用正确的输入)。我做错了什么?(此时仅使用x作为3个元素的向量)。原因是,此函数仅在
x
为3个元素的向量时才起作用。如果指定的元素多于3个,则第二个for
循环将生成越界错误,因为m
仅为3个元素。如果在迭代中i=4
,m
没有第四个元素(或任何超出该元素的元素),那么您将得到一个越界错误。顺便说一句,“fis”是什么?fis文件是Matlab中的模糊推理系统文件。我知道x必须是一个3元素向量,并且非常确定我的fis的输入是一个。除非我错了,否则我看不出我做错了什么。确切的错误是什么?它发生在代码中的什么地方?您可以放置调试语句吗?在使用排序函数之前,是否可以打印出代码中x的大小?错误为:警告:某些输入值超出了指定的输入范围。>在2005年cmthdlg中76的evalfis中,matlab网站上给出的示例函数也出现了相同的错误。