複数データの結合方法について(時系列ではなく距離のデータ)
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
時系列データと似ているのですが
時間ではなくDistance(m)を基準に、複数のデータを統合したいと考えています。
下記のURLと同様のことを行う方法がないでしょうか。
0 comentarios
Respuestas (4)
Kazuya
el 12 de Jun. de 2019
outerjoin 関数でおっしゃるような結合はできますが、「±5分であれば同じ時刻とみなす」というのが少しややこしいので1発でできる関数はなさそうです。事前に retime 関数で時間情報を合わせておいて、outerjoin 関数というのが現実的かと思います。
1 comentario
Kazuya
el 12 de Jun. de 2019
すいません、、質問をよく読んでいませんでした。「時間ではなく距離(m)」を基準に結合するんですね。±5mであれば同じとみなす、、といった状況ですか?
ismembertol 関数(https://jp.mathworks.com/help/matlab/ref/ismembertol.html)辺りが使えそうな気がしますね。もしサンプル or ダミーデータがあれば簡単なコード作ってみますよ。
Kazuya
el 13 de Jun. de 2019
さてサンプルコード作ってみましたので、実行して確かめてみてください。もっときれいなやり方があるとは思いますが参考になりましたら幸いです。各関数のオプション設定など??な部分も多いかと思いますが、できればドキュメンテーションページを読み込みながら悩んでみてください。何かあれば新しい回答としではなく「この回答についてコメント」のボタンからコメントくださいませ。
%%
% サンプルデータ(|table|型)作成(注:わかりやすい結果になるようデータは変更しています)
tmp = [
55.33 9.07
55.48 8.82
55.64 8.89
55.78 8.73
55.94 8.74];
data1 = array2table(tmp,'VariableNames',{'m','A'});
tmp = [55.48 32.6 5.6
55.63 29.7 6.3
55.79 28.9 6.6
55.94 29.6 5.7
56.09 30.0 4.2];
data2 = array2table(tmp,'VariableNames',{'m','C','D'});
%%
% 変数 |m |をベースに |data1, data2|の各変数(|A,C,D,E,F|) を結合してみます。
%
% まずは何も考えずに outerjoin 関数で結合。
merged1 = outerjoin(data1,data2,'Keys','m','MergeKeys',true)
%%
% 次に ±0.01 m の際は同じ値と見なす実装にしてみます。
% まずは ismembertol 関数で 0.01 以内の差で一致する行を抽出します。
tol = 0.01;
[idxdata2,locdata1] = ismembertol(data2.m,data1.m,tol,'DataScale',1);
%%
% data2.m の要素が data1.m の要素の許容誤差内にある場合に logical |1| (|true|) を含む配列 idxdata2 となっているはず。data2.m
% の値を 0.01 以内で一致した data1.m の値に書き換え。'DataScale',1 オプション無しで実行すると、
% 「相対誤差」が 0.01 (1%) 以内は一致という処理になってしまう点に注意。
% 'DataScale',1 オプションを加えると「絶対誤差」で判断します。
% この辺は ismembertol 関数のドキュメンテーションページに記載があります。
data2.m(idxdata2) = data1.m(locdata1(idxdata2));
%%
% 満を持して結合。m=55.64, 55.63 及び m=55.78,55.79 が同一とみなされている点に注目。
merged2 = outerjoin(data1,data2,'Keys','m','MergeKeys',true)
2 comentarios
Ver también
Categorías
Más información sobre 時系列イベント en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!