retime関数使用時の timetable/retime (line 140)エラーの解決方法について

조회 수: 4 (최근 30일)
研
2024년 10월 2일
편집: 2024년 10월 3일
私は、現在大学の研究で記録間隔が一定でないデータを、既定の時間ごとに補完する作業を行っています。
その途中、私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)
回答、よろしくお願いいたします。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2024년 10월 2일
エラーメッセージの通り「記録間隔が単調増加ではない(並べ替えられていない)」事がエラーの原因です。
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); % エラーが出る
  댓글 수: 1
研
2024년 10월 3일
편집: 2024년 10월 3일
回答していただき、ありがとうございます。
Ueno様のご指摘の通り、原因は行時間が並び替えられていないことにありました。
無事に解決することができました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 ビッグ データの処理에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!