Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中的自定义模糊聚集函数_Matlab_Fuzzy Logic - Fatal编程技术网

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中它不是一个聚合函数。(它在命令行中使用正确的输入)。我做错了什么?(此时仅

我正在尝试编写一个自定义的聚合函数,以便在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中它不是一个聚合函数。(它在命令行中使用正确的输入)。我做错了什么?(此时仅使用x作为3个元素的向量)。

原因是,此函数仅在
x
为3个元素的向量时才起作用。如果指定的元素多于3个,则第二个
for
循环将生成越界错误,因为
m
仅为3个元素。如果在迭代中
i=4
m
没有第四个元素(或任何超出该元素的元素),那么您将得到一个越界错误。顺便说一句,“fis”是什么?fis文件是Matlab中的模糊推理系统文件。我知道x必须是一个3元素向量,并且非常确定我的fis的输入是一个。除非我错了,否则我看不出我做错了什么。确切的错误是什么?它发生在代码中的什么地方?您可以放置调试语句吗?在使用排序函数之前,是否可以打印出代码中x的大小?错误为:警告:某些输入值超出了指定的输入范围。>在2005年cmthdlg中76的evalfis中,matlab网站上给出的示例函数也出现了相同的错误。