📄 determinesimultaneouswinner.m
字号:
function [Value, Pos] = DetermineSimultaneousWinner(X,XMap,Y,YMap,MLKP,Alpha);
DistTypeX=upper(MLKP.DistTypeX);
if (DistTypeX == 'COR')
% maximum of scaled inner products
CorrValuesX = CalcCorrValues(X,XMap);
DistanceX = ones(1,MLKP.Nunits) - CorrValuesX;
elseif (DistTypeX == 'WCC')
CorrValuesX=WccValues(X,XMap,MLKP);
DistanceX = ones(1,MLKP.Nunits) - CorrValuesX;
else
% minimum of Euclidean distances, absolute values or Tanimoto distances
if (DistTypeX == 'EUC')
DistanceX = dist(X,XMap);
elseif (DistTypeX == 'ABS')
DistanceX = sum(abs(XMap-(ones(MLKP.Nunits,1)*X)'));
elseif (DistTypeX == 'WDD')
DistanceX = WddValues(X,XMap,MLKP);
else
DistanceX = TanimotoDistance(X,XMap,MLKP);
end
DistanceX = DistanceX/max(DistanceX);
end
DistTypeY=upper(MLKP.DistTypeY);
if (DistTypeY== 'COR')
% maximum of scaled inner products
CorrValuesY = CalcCorrValues(Y,YMap);
DistanceY = ones(1,MLKP.Nunits) - CorrValuesY;
elseif (DistTypeY == 'WCC')
CorrValuesY=WccValues(Y,YMap,MLKP);
DistanceY = ones(1,MLKP.Nunits) - CorrValuesY;
else
% minimum of Euclidean distances, absolute values or Tanimoto distances
if (DistTypeY == 'EUC')
DistanceY = dist(Y,YMap);
elseif (DistTypeY == 'ABS')
DistanceY = sum(abs(YMap-(ones(MLKP.Nunits,1)*Y)'));
elseif (DistTypeY == 'WDD')
DistanceY = WddValues(Y,YMap,MLKP);
else
DistanceY = TanimotoDistance(Y,YMap,MLKP);
end
MaxY=max(DistanceY);
if MaxY > 0
DistanceY = DistanceY/MaxY;
end
end
% determine simultaneous winner
[Value, Pos] = min(Alpha*DistanceX+(1-Alpha)*DistanceY);
% if necessary, calculate normalised inner-product for weighting
if (upper(MLKP.AdaptLearn) == 'Y' | upper(MLKP.BoltzmannMode) ~= 'NOT')
Value = 2 - Value;
else
Value = 1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -