2013-02-04 72 views
0

我正在尝试编写一个matlab函数,该函数支持模糊集支持(x)功能

首先,要知道什么support(x)手段,它是:清晰的集合中包含具有隶属度元素> 0

一个隶属函数的一个例子是here

例如,如果我在MATLAB中运行以下命令(注意trapmf是模糊逻辑工具箱的一部分,以防万一它不运行)

>> x=1:5 

x = 

    1  2  3  4  5 

>> y=trapmf(x,[1 3 4 5]); 
>> y 

y = 

     0 0.5000 1.0000 1.0000   0 

所以,support(x)这里会:2,3,4,因为这些是具有非零成员值的元素。

走到这想法,我想这样做的MATLAB函数(.m文件)如下:

function support(x) 
    y = trapmf(x,[1 3 4 5]); 
for i=1:length(y) 
    if(y(i) == 0) 
     x(i) 
    end 
end 

但是,当我运行它,我得到如下:

>> support(x) 

ans = 

    1 


ans = 

    5 

这是为什么?我应该在代码中修复什么?

谢谢。

回答

1

不知道你的代码是干什么的,但如何只使用这样的:

function s = support(x) 
    y = trapmf(x,[1 3 4 5]); 
    s = x(y~=0) 
+0

您可能需要指定第二个输入参数,以便[1 3 4 5]是可变的。 –