% produsul cartezian a doua multimi fuzzy

close all, clear all, clc, format compact


% parametrii multimii fuzzy trapezidale sau triunghiulare A 
A_params=[5 10 10 15];  

% parametrii multimii fuzzy trapezidale sau triunghiulare B 
B_params=[3 10 10 17];  

% display fuzzy relation: "almost gray"
% -----------------------------------------------------------------
min_X=0;   max_X=20;
x1=min_X:.1:max_X; % rezolutie la afisare mf
x2=min_X:.3:max_X;  % rezolutie la afisare produs cartezian

A1=trapmf(x1, A_params);
B1=trapmf(x1, B_params);

A2=trapmf(x2, A_params);
B2=trapmf(x2, B_params);

% se determina produsul cartezian
for i=1:length(x2)
    %AxB(i,:)=min(A2(i),B2);
    AxB(i,:)=min(A2,B2(i));
end

% se afiseaza cele doua multimi
subplot (2,1,1), plot(x1,A1, 'b', 'LineWidth',2)
axis ([min_X max_X -.1 1.1]); 
title ('Multimea fuzzy A'), xlabel('x')
set(gcf, 'name', 'Multimile fuzzy'); % numele ferestrei

subplot (2,1,2), plot(x1,B1, 'r', 'LineWidth',2)
axis ([min_X max_X -.1 1.1]); 
title ('Multimea fuzzy B'), xlabel('y')

% se afiseaza rezultatul produsului cartezian
[xi,yi]=meshgrid(x2,x2);
zi=griddata(x2,x2,AxB,xi,yi);
figure
surf(xi,yi,zi)
hold on
xlabel('x'), ylabel('y'), zlabel('AxB')
set(gcf, 'name', 'Produsul cartezian'); % numele ferestrei
hold off


