2013-02-04 178 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]是可變的。 –