retime関数使用時の timetable/retime (line 140)エラーの解決方法について
4 views (last 30 days)
Show older comments
私は、現在大学の研究で記録間隔が一定でないデータを、既定の時間ごとに補完する作業を行っています。
その途中、私1人では解決できない問題が発生したため、担当教授の許可を得て、この場で質問させていただきます。
以下の図の通りに入力して1秒ごとのデータを出力しようとしました。
その結果次のような文面が表示されました。
Error using timetable/retime (line 140)
Input timetables must contain sorted (increasing or decreasing) row times when synchronizing using 'linear'.
この場合、1秒ごとのデータを出力するには、どうすればよいのでしょうか。
最後に、今回使用したコードを下に記載します。
Intensity = []';
Time = seconds([])';
TT1 = timetable(Time ,Intensity)
TT2 = retime(TT1,'regular','linear','SampleRate',1)
回答、よろしくお願いいたします。
0 Comments
Accepted Answer
Atsushi Ueno
on 2 Oct 2024
エラーメッセージの通り「記録間隔が単調増加ではない(並べ替えられていない)」事がエラーの原因です。
retime 関数の文書に「入力 timetable には、並べ替えられた一意の行時間がなければなりません」と記載されています。
実験1:「一意でない行時間」を入力すると下記のエラーが出ます
Input timetables must contain unique row times when synchronizing using 'linear'.
実験2:「並べ替えられていない行時間」を入力すると下記のエラーが出ます
Input timetables must contain sorted (increasing or decreasing) row times when synchronizing using 'linear'.
Time = seconds([0 0.2 0.4 0.7 0.9 1.1 1.3 1.6 1.8 2.0 2.2 2.5 2.7 2.9 3.1 3.4 3.6 ...
3.8 4.0 4.2 4.5 4.7 4.9 5.1 5.4 5.6 5.8 6.1 6.3 6.5 6.8 7.0 7.2 7.4 7.7]'); % 単調増加
TT1 = timetable(Time,rand(size(Time))); % Intensityは関係無いので適当な乱数
TT2 = retime(TT1,'regular','linear','SampleRate',1); % エラー無し
% 実験1:一意でない行時間を入力する
TT1.Time(11) = TT1.Time(10); % 10番目と11番目のデータを同じ(一意でない状態)にする
all(size(unique(TT1.Time)) == size(TT1.Time)) % 一意なら1、そうでなければ0
TT2 = retime(TT1,'regular','linear','SampleRate',1); % エラーが出る
%% 実験2:並べ替えられていない行時間を入力する
TT1.Time(10) = seconds(7.0); % 10番目の時間だけぴょこーんと飛び出す状態にする
issorted(TT1.Time) % 単調増加なら1、そうでなければ0
TT2 = retime(TT1,'regular','linear','SampleRate',1); % エラーが出る
More Answers (0)
See Also
Categories
Find more on ビッグ データの処理 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!