如何在两个向量MatLab上绘制交叉运算

时间:2013-11-28 18:50:23

标签: matlab vector

我试图将两个模糊集的交集表示为MatLab中的3d网格。

以下是我的矢量集:

x = [0.3 0.5 0.7]
y = [0.5 0.7 0.1]

接下来是这些陈述:

[u,v] = meshgrid(x,y)
w = min(u,v)
mesh(u,v,w)

xy刻度似乎遍布整个地方,与每个矢量的实际索引号相关,即1 to 3,图表应代表形状一个小三角形/ T-norm。

目前它看起来像这样:

Graph

以下是我正在遵循的书中的一个例子:

fuzzy sets

忽略看起来像分数的东西,它们是分隔符。结果图如下:

fuzzy intersection

2 个答案:

答案 0 :(得分:1)

通过参数u,v,您告诉网格使用其中的值,即xy中的值,以便定位数据点和相应的刻度。如果您只想在1,2,3处获得头寸和价位,请将这些参数保留下来。

mesh(w)

答案 1 :(得分:1)

在查找模糊集和交叉点之后,这就是我想出的。首先,让我们重现教科书的例子:

% possible values and associated degrees of truth for F
Fv = 1 : 5;
Ft = [0 0.5 1 0.5 0];

% possible values and associated degrees of truth for D
Dv = 2 : 4;
Dt = [0 1 0];

% determine degrees of truth for fuzzy intersection
It = bsxfun(@min, Ft', Dt);

% plot
h = mesh(Dv, Fv, It);
set(h, 'FaceColor', 'none')
set(h, 'EdgeColor', 'k')
xlim([0 4.5])
ylim([0 5])
xlabel D
ylabel F
view(37.5, 30)

结果是:

fuzzy intersection

不像你的书那么漂亮,但同样的事情。

在示例中应用相同的代码会产生:

fuzzy intersection