Оцените нечеткую функцию принадлежности
Оцените обобщенную колоколообразную функцию принадлежности через область значений входных значений от 0
через 10
.
x = 0:0.1:10;
mf = fismf("gbellmf",[2 4 6]);
y = evalmf(mf,x);
Постройте оценку.
plot(x,y)
xlabel('gbellmf, P = [2 4 6]')
Создайте вектор трех Гауссовых функций принадлежности.
mf = [fismf("gaussmf",[0.9 2.5],'Name',"low"); fismf("gaussmf",[0.9 5],'Name',"medium"); fismf("gaussmf",[0.9 7.55],'Name',"high")];
Задайте входной диапазон, по которому можно оценить функции принадлежности.
x = (-2:0.1:12)';
Оцените функции принадлежности.
y = evalmf(mf,x);
Постройте результаты оценки.
plot(x,y) xlabel('Input (x)') ylabel('Membership value (y)') legend("low","medium","high")
Создайте треугольную функцию принадлежности типа 2.
mf = fismftype2("trimf",[5 7 9],'LowerLag',0.3,'LowerScale',0.8);
Оцените функцию принадлежности через область значений входных значений от 0
через 10
.
x = 0:0.1:10; [yUpper,yLower] = evalmf(mf,x);
Постройте оцененный верхний и более низкий MFS.
plot(x,yUpper,x,yLower) legend('Upper MF','Lower MF','Location','northwest') xlabel('Input') ylabel('Membership value')
mfT1
— Функция принадлежности типа 1fismf
возразите | вектор fismf
объектыФункция принадлежности типа 1, заданная как fismf
возразите или вектор таких объектов.
x
— Входное значениеВходное значение, заданное как скаляр, вектор или 2D матрица. Если mf
isa:
Один fismf
объект, затем можно задать x
как скаляр, вектор или матрица
Вектор fismf
объекты, затем можно задать x
как скаляр или вектор
mfT2
— Функция принадлежности типа 2fismftype2
возразите | массив fismftype2
объектыФункция принадлежности типа 2, заданная как fismftype2
возразите или вектор таких объектов.
y
— Значения членства для функции принадлежности типа 1Значение членства для функции принадлежности типа 1, возвращенной как скаляр, вектор или 2D матрица. Если mfT1
isa:
Один fismf
объект, затем y
скаляр, вектор или матрица с теми же размерностями как x
. Каждый элемент y
оцененное значение членства для соответствующего элемента x
.
Вектор fismf
объекты, затем y
M-by-N матрица, где M и N являются длинами mfT1
и x
, соответственно. y
(i, j), оцененное значение функции принадлежности mfT1
(i) для входного значения x
J.
yUpper
— Верхние значения членства в MF для функции принадлежности типа 2Верхнее значение членства в MF для функции принадлежности типа 2, возвращенной как скаляр, вектор или 2D матрица. Если mfT2
isa:
Один fismftype2
объект, затем y
скаляр, вектор или матрица с теми же размерностями как x
. Каждый элемент y
оцененное значение членства для соответствующего элемента x
.
Вектор fismftype2
объекты, затем y
M-by-N матрица, где M и N являются длинами mfT2
и x
, соответственно. y
(i, j), оцененное значение функции принадлежности mfT2
(i) для входного значения x
J.
yLower
— Более низкие значения членства в MF для функции принадлежности типа 2Более низкое значение членства в MF для функции принадлежности типа 2, возвращенной как скаляр, вектор или 2D матрица. Если mfT2
isa:
Один fismftype2
объект, затем y
скаляр, вектор или матрица с теми же размерностями как x
. Каждый элемент y
оцененное значение членства для соответствующего элемента x
.
Вектор fismftype2
объекты, затем y
M-by-N матрица, где M и N являются длинами mfT2
и x
, соответственно. y
(i, j), оцененное значение функции принадлежности mfT2
(i) для входного значения x
J.
Поведение изменяется в R2018b
evalmf
теперь берет fismf
возразите как входной параметр, а не тип и параметры функции принадлежности. Кроме того, можно теперь оценить несколько функций принадлежности путем передачи массива fismf
объекты к evalmf
. Существуют различия между этими подходами, которые требуют обновлений вашего кода.
Ранее вы оценивали функцию принадлежности для данных входных значений, x
, путем определения типа функции принадлежности, type
, и параметры функций принадлежности, params
.
y = evalmf(x,params,type);
Обновите свой код, чтобы сначала создать fismf
объект, mf
. Затем передайте этот объект evalmf
.
mf = fismf(type,params); y = evalmf(mf,x);
Кроме того, ранее, чтобы оценить несколько функций принадлежности вы вызвали evalmf
однажды для каждой функции принадлежности.
y1 = evalmf(x,params1,type1); y2 = evalmf(x,params2,type2); y3 = evalmf(x,params3,type3);
Теперь можно оценить несколько функций принадлежности путем передачи массива fismf
объекты к evalmf
.
mf1 = fismf(type1,params1); mf2 = fismf(type2,params2); mf2 = fismf(type3,params3); y = evalmf([mf1 mf2 mf3],x);
Здесь, y = [y1 y2 y3]';
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.