- •Лабораторная работа №3 «Определения границ фаз в термическом анализаторе сплавов с помощью нечеткой логики»
- •Краткие теоретические сведения
- •Определение границ фазовых составляющих сплава с помощью четкой логики
- •Определение границ фаз с помощью нечеткой логики
- •Алгоритм определения границ фаз с помощью нечеткой логики.
- •Подготовка к лабораторной работе.
- •Порядок выполнения работы
- •Содержание отчета по лабораторной работе
- •Краткие теоретические сведения.
- •Выполнение работы
- •Файл-процедура для нахождения локального минимума
- •Файл-процедура для нахождения точки конца кристаллизации
- •Файл-процедура для нахождения точек
- •7.1.4 Результаты работы программы для обнаружения границ фаз в термическом анализаторе алюминиевых сплавов при помощи четкой логики.
- •7.2 Для нечеткой логики
- •Файл-процедура для нечеткой логики: определяет максимум
- •7.3 Результаты работы программы для обнаружения границ фаз в термическом анализаторе алюминиевых сплавов при помощи нечеткой логики.
- •Файл-сценарий для создания снв и сохранения ее на диске в виде файла
- •Аннотация к созданной снв
- •7.3. Сравниваем результат работы программы обнаружения границ фаз с помощью четкой логики с результатом работы программы обнаружения границ фаз с помощью нечеткой логики.
Выполнение работы
Файлы-процедуры для четкой логики
Файл-процедура для четкой логики: определяет минимум
function [X1,Y1,i,xmax1,ymax1,ymin,xmin]=findmin_ch(i,Fx,Fy);
% Вызов файла-процедуры для нахождения локального минимума
% (xmax1,ymax1) - координаты 1-го локального максимума
% (ymin,xmin) - координаты локального минимума
% X1,Y1 - длина X1 i Y1
% Fx,Fy - исследуемые точки массива,
% полученные из загружаемых файлов
cnt=i; %начало выполнения функции
fl1=0; %flag-min,станет равно 1 когда найдется min
fl2=0; %flag-max,станет равно 1 когда найдется max
DX=Fx(2)-Fx(1); %приращение
Yd=[]; %массив для хранения значений производной
Yd=diff(Fy)/DX; %определение производной
while or(fl1==0,fl2==0)==1 %выполнять, пока не найден максимум или минимум
if and(and(Yd(i)>=0,Yd(i+1)<0),fl2==0)==1 %если производная в i-й точке >0,
%а в i+1-й точке <0 и локальный максимум не найден
xmax1=Fx(i); %записать значение отсчета
ymax1=Fy(i); %и координату
fl2=1; %установить флаг максимума 1
end;
if and(and(Yd(i)<=0,Yd(i+1)>0),fl1==0)==1 %нахождение минимума
%если производная в i-й точке >0,
%а в i+1-й точке <0 и fl1==0
% то
xmin=Fx(i); %записать значение отсчета
ymin=Fy(i); %и координату
fl1=1; %установить флаг минимума 1
end;
i=i+1;
end;
i=i-1; %возврат на шаг(для
%фиксации точки минимума)
X1=(xmin-xmax1); %расстояние между абсциссами минимума и левого максимума
Y1=ymax1-ymin; %расстояние между ординатами минимума и левого максимума
Файл-процедура для четкой логики: определяет максимум
function [X2,Y2,i,ymax2,xmax2]=findmax_ch(i,Fx,Fy);
% Вызов файла-процедуры для нахождения локального максимума
% (ymax2,xmax2) - координаты 2 локального максимума
% X2,Y2 – длина X2 и Y2
% Fx,Fy - исследуемые точки массива,
% полученные из загружаемых файлов
cnt=i; %начало выполнения функции
fl=0; %флаг максимума
%станет равно 1 когда найдется максимум
DX=Fx(2)-Fx(1); %приращение
Yd=[]; %массив для хранения значений производной
Yd=diff(Fy)/DX; %определение производной
while fl==0 %выполнять, пока flag max флаг максимума '0'
if and(Yd(i)>=0,Yd(i+1)<0)==1 %если производная в i-й точке >0,
%а в i+1-й точке <0, то
xmax2=Fx(i); %записать значение отсчета
ymax2=Fy(i); %и координату
fl=1; %установить флаг максимума 1
break;
end;
i=i+1;
end;
X2=xmax2-Fx(cnt); %расстояние между абсциссами максимума и минимума
Y2=ymax2-Fy(cnt); %расстояние между ординатами максимума и минимума
