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

4 Ansichten (letzte 30 Tage)
研
am 2 Okt. 2024
Bearbeitet: am 3 Okt. 2024
私は、現在大学の研究で記録間隔が一定でないデータを、既定の時間ごとに補完する作業を行っています。
その途中、私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)
回答、よろしくお願いいたします。

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 2 Okt. 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); % エラーが出る
  1 Kommentar
研
am 3 Okt. 2024
Bearbeitet: am 3 Okt. 2024
回答していただき、ありがとうございます。
Ueno様のご指摘の通り、原因は行時間が並び替えられていないことにありました。
無事に解決することができました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu ビッグ データの処理 finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!