Last active
December 30, 2015 21:49
-
-
Save Mekapiku/7890341 to your computer and use it in GitHub Desktop.
2次元空間上の複数点から平均,標準偏差,相関係数を得て,ある別の点のマハラノビス距離を求めるスクリプト
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% | |
% マハラノビス距離 | |
% | |
% Date : 2013/12/10 | |
% | |
% | |
% mahal_dist | |
% | |
% ある点におけるマハラノビス距離を算出 | |
% | |
% @param vector1 all_x | |
% @param vector1 all_y | |
% @param x | |
% @param y | |
% @return d | |
% | |
function [d] = mahal_dist(all_x, all_y, x, y) | |
% 全体の平均と標準偏差,相関係数をとる | |
[x_avg, x_sigma, y_avg, y_sigma, r] = mahal_train(all_x, all_y); | |
% Debug | |
x_avg | |
x_sigma | |
y_avg | |
y_sigma | |
r | |
% 正規化 | |
u1 = (x - x_avg) / x_sigma; | |
u2 = (y - y_avg) / y_sigma; | |
d = sqrt((pow_2(u1) - 2 * r * u1 * u2 + pow_2(u2)) / 1 - pow_2(r)); | |
% | |
% mahal_train | |
% | |
% マハラノビス距離を求めるための | |
% 全体平均,偏差,相関係数を求める | |
% | |
% @param vector1 x | |
% @param vector1 y | |
% @return x_avg | |
% @return x_sigma | |
% @return y_avg | |
% @return y_sigma | |
% | |
function [x_avg, x_sigma, y_avg, y_sigma, r] = mahal_train(x, y) | |
% 平均と標準偏差をとる | |
x_avg = mean(x); | |
x_sigma = std(x); | |
y_avg = mean(y); | |
y_sigma = std(y); | |
% 相関係数をとる | |
tmp = corrcoef(x, y); | |
r = tmp(1, 2); | |
% | |
% pow_2 | |
% | |
% ある数の2乗を返す | |
% | |
% @param a | |
% @return b | |
% | |
function [b] = pow_2(a) | |
b = hypot(a, a); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment