-
Notifications
You must be signed in to change notification settings - Fork 1
/
tri_gt2fs.m
61 lines (55 loc) · 1.94 KB
/
tri_gt2fs.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
%Example of GT2FS with lmf and umf having the same peak.
x = 0:1:100; %universe of discourse
% support = (a,b) where a is left shoulder and b is right shoulder
% peak of triangular MF
% support and peak required to plot the trimf
umf.left=10;
umf.right=90;
umf.peak=50;
umf.support=[umf.left umf.right];
umf.y=trimf(x,[umf.left umf.peak umf.right]);
% umf.support(1) < lmf.support(1)
% umf.support(2) > lmf.support(2)
lmf.left=40;
lmf.right=70;
lmf.peak=50;
lmf.support=[lmf.left lmf.right];
lmf.y=trimf(x,[lmf.left lmf.peak lmf.right]);
%Plotting zSlice at Z0
z=zeros(1,length(x));
hold on
plot3(x,lmf.y,z);
plot3(x,umf.y,z);
% hold off;
zlevels=5; % ie zlevel number of zSlices, where Z0 is not counted because it is the FOU of the IT2 set.
zSlices=ones(1,zlevels);
for i=1:zlevels
zSlices(1,i)=i*(1/zlevels); %values of zlevels
end
%Plotting zSlices from Z1 to Zzlevels
for i=1:zlevels
zmf(i).zvalues=zSlices(1,i)*ones(1, length(x)); %storing an array with the same zvalue for plot3
zmf(i).umf.left=umf.left+(1*zSlices(1,i)); %changing support
zmf(i).umf.right=umf.right-(1*zSlices(1,i));
zmf(i).umf.peak=(umf.peak+lmf.peak)/2;
zmf(i).umf.supp=[zmf(i).umf.left zmf(i).umf.right];
zmf(i).umf.y=trimf(x, [zmf(i).umf.left zmf(i).umf.peak zmf(i).umf.right]);
zmf(i).lmf.left=lmf.left+(3*zSlices(1,i));
zmf(i).lmf.right=lmf.right-(3*zSlices(1,i));
zmf(i).lmf.peak=(umf.peak+lmf.peak)/2;
zmf(i).lmf.supp=[zmf(i).lmf.left zmf(i).lmf.right];
zmf(i).lmf.y=trimf(x, [zmf(i).lmf.left zmf(i).lmf.peak zmf(i).lmf.right]);
plot3(x,zmf(i).umf.y,zmf(i).zvalues)
plot3(x,zmf(i).lmf.y,zmf(i).zvalues)
end
hold off
% % Defuzzification
% for i=1:zlevels
% yl(i)=EKM(x,zmf(i).lmf.y,zmf(i).umf.y,-1);
% yr(i)=EKM(x,zmf(i).lmf.y,zmf(i).umf.y,1);
% end
% sum1=0;
% for i=1:zlevels
% sum1=sum1+(yl(i)+yr(i))*zSlices(1,i)*0.5;
% end
% sum1/(sum(zSlices))