具体的には下記5項目に分けて説明しようと思います。
1、アップルウォッチのデータをMATLABで読み込む
2、緯度経度情報をメートル座標系に変換する
3、速度に応じて色分けした軌跡を表示する
4、スライダーを設置して値の更新を確認する
5、矢印を用いて走行時の向きと速度を可視化する
1、アップルウォッチのデータをMATLABで読み込む
アップルウォッチのワークアウトアプリで記録したデータは、接続しているiPhoneのヘルスケアアプリで書き出すことができます。ワークアウトデータの書き出し方法は下記のとおりです。
Dy = deg2rad(Pos2(
1
)
-
Pos1(
1
));
Dx = deg2rad(Pos2(
2
)
-
Pos1(
2
));
P = deg2rad(mean([Pos1(
1
) Pos2(
1
)]));
Rx =
6378137.0
;
%[m]
Ry =
6356752.314245
;
%[m]
E2 = (Rx^2
-
Ry^2)/Rx^2;
W = sqrt(
1
-E2
*
sin(P)^2);
N = Rx/W;
M = Rx*(
1
-E2)
/
W^3;
if
Dx==
0
&&
Dy<0
d = -sqrt((Dy*M)^2
+
(Dx*N*cos(P))^2);
elseif
Dx<0
&&
Dy==
0
d = -sqrt((Dy*M)^2
+
(Dx*N*cos(P))^2);
d = sqrt((Dy*M)^2
+
(Dx*N*cos(P))^2);
上記の関数を別ファイルで保存するか、スクリプトファイルの最後尾に記述します。関数の作成方法がわからない場合
関数の作成 | MATLAB基礎18
を参考にしてください。
スクリプトファイルに下記の記述を追加します。
MATLAB
len = length(tbl.latAttribute);
Lat = zeros(len,1);
Lon = zeros(len,1);
Dist = zeros(len,1);
for i=1:len
Lat(i) = hubeny([tbl.latAttribute(1) tbl.lonAttribute(1)],[tbl.latAttribute(i) tbl.lonAttribute(1)]);
Lon(i) = hubeny([tbl.latAttribute(1) tbl.lonAttribute(1)],[tbl.latAttribute(1) tbl.lonAttribute(i)]);
if i>1
Dist(i) = hubeny([tbl.latAttribute(i-1) tbl.lonAttribute(i-1)],[tbl.latAttribute(i) tbl.lonAttribute(i)]);
そして、下記コードでグラフを作成し結果を確認します。