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 нечеткого множества является областью во вселенной беседы, для которой нечеткое множество имеет определенное значение членства, α. Для выпуклого нечеткого множества каждого α - сокращение задает непрерывную область во вселенной беседы.

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

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

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

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

  • [CL CR] является интервалом, заданным α - сокращение нечеткого множества 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