user1574598
user1574598

Reputation: 3881

How to plot a intersection operation on two vectors MatLab

I'm trying to represent a the intersection of two fuzzy sets as a 3d mesh in MatLab.

Here are my sets of vectors:

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

Followed by these statements:

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

The x and y ticks seem to be all over the place and do not correlate to the actual index number of each vector i.e. 1 to 3, and the graph should represent the shape of a small triangle/T-norm.

At the moment it looks like this:

Graph

Here is an example out of my book I'm following:

fuzzy sets

Ignore what looks like fractions, they are delimiters. Here is the resulting graph:

fuzzy intersection

Upvotes: 0

Views: 525

Answers (2)

A. Donda
A. Donda

Reputation: 8477

After looking up fuzzy sets and intersections, here's what I've come up with. First, let's reproduce the textbook example:

% 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)

The result is:

fuzzy intersection

Not as pretty as in your book, but the same thing.

Applying the same code to your example yields:

fuzzy intersection

Upvotes: 1

A. Donda
A. Donda

Reputation: 8477

Via the arguments u,v you are telling mesh to use the values in them, i.e. the values from x and y, for the positioning of the data points and corresponding ticks. If you just want positions and ticks at 1, 2, 3, leave these arguments out.

mesh(w)

Upvotes: 1

Related Questions