fuzarith

Выполните нечеткую арифметику

Описание

пример

C = fuzarith(X,A,B,operator) возвращает нечеткое множество C, что является результатом применения указанного нечеткого оператора к нечетким наборам A и B. Операция выполняется по всей вселенной дискурса X

Примеры

свернуть все

Задайте функции Гауссова и трапеций.

N = 501;
minX = -20;
maxX = 20;
x = linspace(minX,maxX,N);

A = trapmf(x,[-10 -2 1 3]);
B = gaussmf(x,[2 5]);

Оцените сумму, различие, продукт и частный коэффициент A и B.

Csum = fuzarith(x,A,B,'sum');
Csub = fuzarith(x,A,B,'sub');
Cprod = fuzarith(x,A,B,'prod');
Cdiv = fuzarith(x,A,B,'div');

Постройте график результатов сложения и вычитания.

figure
subplot(2,1,1)
plot(x,A,'--',x,B,':',x,Csum,'c')
title('Fuzzy Addition, A+B')
legend('A','B','A+B')
subplot(2,1,2)
plot(x,A,'--',x,B,':',x,Csub,'c')
title('Fuzzy Subtraction, A-B')
legend('A','B','A-B')

Figure contains 2 axes. Axes 1 with title Fuzzy Addition, A+B contains 3 objects of type line. These objects represent A, B, A+B. Axes 2 with title Fuzzy Subtraction, A-B contains 3 objects of type line. These objects represent A, B, A-B.

Постройте график результатов умножения и деления.

figure
subplot(2,1,1)
plot(x,A,'--',x,B,':',x,Cprod,'c')
title('Fuzzy Multiplication, A*B')
legend('A','B','A*B')
subplot(2,1,2)
plot(x,A,'--',x,B,':',x,Cdiv,'c')
title('Fuzzy Division, A/B')
legend('A','B','A/B')

Figure contains 2 axes. Axes 1 with title Fuzzy Multiplication, A*B contains 3 objects of type line. These objects represent A, B, A*B. Axes 2 with title Fuzzy Division, A/B contains 3 objects of type line. These objects represent A, B, A/B.

Входные параметры

свернуть все

Вселенная дискурса, заданная как вектор.

Входной нечеткий набор, заданный как вектор с той же длиной, что и X. Каждый элемент A - значение нечеткого множества для соответствующего значения X.

A должно быть выпуклым нечетким множеством. Для получения дополнительной информации см. «Алгоритмы».

Входной нечеткий набор, заданный как вектор с той же длиной, что и X. Каждый элемент B - значение нечеткого множества для соответствующего значения X.

B должно быть выпуклым нечетким множеством. Для получения дополнительной информации см. «Алгоритмы».

Арифметический оператор, заданный как один из следующих:

  • 'sum' - Нечеткое сложение

  • 'sub' - Нечеткое вычитание

  • 'prod' - Нечеткое умножение

  • 'div' - Нечеткое деление

Для получения дополнительной информации о нечетких арифметических операциях, см. Алгоритмы.

Примечание

Нечеткое сложение может сгенерировать сообщение "divide by zero". Однако это предупреждение не влияет на точность fuzarith.

Выходные аргументы

свернуть все

Вывод нечеткого набора, возвращенного как вектор-столбец с длиной, равной длине X.

Алгоритмы

Для выполнения нечетких арифметических операций нечеткие операнды (входные нечеткие множества A и B) должен быть convex fuzzy sets. Нечеткое множество является выпуклым, если для каждой пары точек x 1 и x 2 во вселенной дискурса X и λ ∈ [0,1].

μ(λx1+(1λ)x2)min(μ(x1),μ(x2))

α-cut нечеткого множества является область во вселенной дискурса, для которой нечеткое множество имеет определенное значение принадлежности, α. Для выпуклого нечеткого множества каждый α -cut задает непрерывную область во вселенной дискурса.

fuzarith использует непрерывные области, заданные α -кутами нечетких множеств A и B чтобы вычислить соответствующий α -cut выходного нечеткого набора C. Для этого fuzarith использует interval arithmetic.

В следующей таблице показов, как вычислить левые и правые контуры интервала выхода. Здесь:

  • [AL AR] - интервал, заданный α-cut нечеткого множества A.

  • [BL BR] - интервал, заданный α-cut нечеткого множества B.

  • [CL CR] - интервал, заданный α-cut нечеткого множества C.

Интервальный арифметический операторОпределение
Сложение: C = A + B

CL=AL+BLCR=AR+BR

Вычитание: C = A - B

CL=ALBRCR=ARBL

Умножение: C = A * B

CL=min(ALBL,ALBR,ARBL,ARBR)CR=max(ALBL,ALBR,ARBL,ARBR)

Деление: C = A/ B

CL=min(ALBL,ALBR,ARBL,ARBR)CR=max(ALBL,ALBR,ARBL,ARBR)

Представлено до R2006a