通过Octave绘制二维模糊MF

问题描述 投票:0回答:1

我想通过

Octave
绘制两个梯形MF的合成。这是我尝试过的:

%MAX composite

pkg load linear-algebra

tx = ty = linspace (-10,10,100)';
cartesian_prod_domain = cartprod(tx,ty);
a = -6; b = -2; c = 2;d = 6;

trape_x = max(min(min(1, (cartesian_prod_domain(:,1) - a)/(b - a)), -(cartesian_prod_domain(:,1) - d)/(d - c) ),0);
trape_y = max(min(min(1, (cartesian_prod_domain(:,2) - a)/(b - a)), -(cartesian_prod_domain(:,2) - d)/(d - c) ),0);

cartesian_prod_range = (max([trape_x, trape_y]'))';

plot3 (cartesian_prod_domain(:,1), cartesian_prod_domain(:,2), cartesian_prod_range);

这就是我得到的:

如您所见,它是有线;但我想要得到像这样有表面的东西:

也许可以通过

mesh
来完成;但我不能。我怎样才能得到它?

matlab plot octave fuzzy-logic
1个回答
0
投票

surf / mesh 命令适用于“网格化”数据。试试这个:

a = -6; b = -2; c = 2; d = 6; Range = linspace( -10, 10, 100 );
[XGrid, YGrid] = ndgrid( Range, Range );

trape_x = max( min( min( 1, (XGrid - a) / (b - a) ), - (XGrid - d)  /(d - c) ), 0 );
trape_y = max( min( min( 1, (YGrid - a) / (b - a) ), - (YGrid - d)  /(d - c) ), 0 );
Zout    = max( trape_x, trape_y );

surf( XGrid, YGrid, Zout );
© www.soinside.com 2019 - 2024. All rights reserved.