简单的模糊逼近程序

clc;
clear all;
close all;

L1 = -3;
L2 = 3;
L = L2 - L1; %模糊变化范围长度;
h = 0.2; %逼近精度
N = L/h + 1;%模糊集个数;
T = .01; %步长;
x = L1:T:L2; %模糊集变化范围;
for i = 1:N
e(i) = L1 + L/(N-1) *(i-1);
end
c = 0;
d = 0;
for i = 1:N
%% 隶属函数
if i == 1
u = trimf(x,[e(1),e(1),e(2)]);
elseif i == N
u = trimf(x,[e(N-1),e(N),e(N)]);
else
u = trimf(x,[e(i-1),e(i),e(i+1)]);
end
hold on;
plot(x,u,'r','linewidth',2);
c = c + sin(e(i)) * u;
d = d + u;
end
xlabel('x');
ylabel('隶属函数模糊集');
for i = 1:L/T + 1
f(i) = c(i) / d(i);
end
y = sin(x);
figure(2);
plot(x,f,'r',x,y,'k');
grid on;
title('模糊逼近');

figure(3)
plot(x,f-y,'b','linewidth',4)

原文地址:https://www.cnblogs.com/Kermit-Li/p/4366214.html