Hamacher сумма:
MATLAB код Hamacher суммы
Я написал следующий MATLAB код для вышеуказанной функции
function f=hamachersum(x,y)
f = zeros(numel(x),1);
for j=1:numel(x)
if x(j)==1 && y(j)==1
f(j,1)=1;
else
f(j,1)=(x(j)+y(j)-2*(x(j)*y(j)))/(1-(x(j)*y(j)));
end
end
end
Тогда я хочу, чтобы проверить t3=hamachersum(t1,t2)
Мои входные значения t1, t2
являются
t1
t1 =
1.0000
0
1.0000
1.0000
1.0000
1.0000
NaN
0.8167
1.0000
1.0000
1.0000
0.4667
NaN
1.0000
1.0000
1.0000
NaN
NaN
1.0000
1.0000
1.0000
NaN
0.0250
1.0000
t2
t2 =
1.0000
0.5524
1.0000
1.0000
1.0000
1.0000
NaN
0
1.0000
1.0000
1.0000
1.0000
NaN
1.0000
1.0000
1.0000
NaN
NaN
0.6032
1.0000
1.0000
NaN
0.9973
0.7260
В результате
t3 =
1.2000
0.5524
1.0000
1.0000
1.0000
1.0000
NaN
0.8167
2.0000
2.0000
1.0000
1.0000
NaN
0.6667
1.0000
1.0769
NaN
NaN
1.0000
1.0000
1.0000
NaN
0.9973
1.0000
Почему я получаю значения от выше 1. Поскольку это нечеткий оператор, у него не может быть значений выше 1.
В коде есть что-то неправильное?
Установка 't1 = [0: 0.01: 1] ';' 't2 = t1',' t3 = hamachersum (t1, t2) 'приводит к значениям от 0 до 1, также как и при использовании' t2 = flipud (t1) '. Я не могу найти ошибку в этом коде, запустив его на R2012a. – Adriaan
. Вы не показываете правдивый 't3'. Включение первых элементов 't1 (1) == 1' и' t2 (1) == 1' явно дает '1', а не' 1.2'. Пожалуйста, покажите реальный ответ. –
@MadPhysicist Это результат, который я получаю при запуске на R2014a –