2013-02-14 44 views
1

我使用“fuzarith”函数划分两个模糊数字;提取以y坐标矩阵格式表示的三角形的顶点

C = fuzarith(X,A,B,运营商) x是定义在哪个操作(在这种情况下一个部门)进行了点的x坐标的行向量。我认为数学术语是abcissa。

A和B是使用函数trimf(X,[ABC]),其中a,b和c是顶点的x坐标可以通过3个顶点定义三角形的模糊数如下所示: 为

x = 0:0.1:10;和 P = trimf(x,[3 6 8]);

triangular fuzzy number

现在,如果我使用除法运算符,让我们说我吗[3 6 8]/[1 2 3], 结果中,r,在数学上是[1 3 8]但是matlab给了我rv/s x的纵坐标列向量。

问题是如何从列向量中提取3个顶点。

回答

1

对于这个或类似的问题,你可以这样做:如果在向量y 1号

y = fuzarith(x, A, B, 'div');  
result = x([find(y ~= 0, 1, 'first') - 1, find(y == 1), find(y ~= 0, 1, 'last') + 1]); 
+0

“查找(Y == 1)”部分可能会有问题。如果横坐标数量太小,就会出现这种情况。例如[4 5 6]/[1 2 3] = [1.33 2.5 6] 但是如果x = 0:1:10,结果将变为[1 6]。任何方式来迎合这一点? – 2013-02-14 20:53:19

+0

如果这可以帮助我试过x = 0:1/n:10,n = 2,3,...,12。 正确答案在n = 6和12. (1x2)矩阵在n = 3,5,7,9,11。 – 2013-02-14 21:17:17

+0

那么,你可以用'find(y == max(y))'替换'find(y == 1)''。这会给你一个最大的索引。 – miy 2013-02-14 21:34:27