粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

MATLABでGPSデータから距離を計算

GPSの緯度経度の行列から移動距離を計算するアルゴリズムmatlab公式に用意されてないので自分で書きました。 探せばあるのかもしれません。

今回の手法ではヒュベニの公式というのを使います。 詳細な説明等はここのサイトがよいです。

画像も借りてきました。

関数は以下の通り。整備したらGithubにでも投げます。

function D = calcGPS_dist(LON,LAT)

len = length(LON);

D = 0;
for i = 1:len-1
    D = D+hubeny([LON(i),LAT(i)],[LON(i+1),LAT(i+1)]);
end

end

function d = hubeny(L1,L2)
% input: pair of [LON,LAT]
% output : distance [m]
% e2 = 0.00669437999019758;
a = 6378137;
b = 6356752.314140;
e2 =   (a^2 - b^2) / a^2;

mu_y = (L1(2) + L2(2))/2;
W = sqrt(1-e2*(sind(mu_y))^2);
M = a*(1-e2)/(W^3);
N = a/W;

dx = (L1(1)-L2(1))/180*pi;
dy = (L1(2)-L2(2))/180*pi;

d = sqrt( (dy*M)^2+(dx*N*cosd(mu_y))^2 );

end

ハマリポイントは角度をradに変換するのを忘れていたところです。