retime,syn​chronizeで引​数にregularを​使うとエラーが出ます​。

10 views (last 30 days)
Mig
Mig on 15 Jan 2023
Edited: Atsushi Ueno on 17 Jan 2023
上のURLのページの[例]サンプルレートの指定 を試みています。
以下のコードを実行しようとすると次のようにエラーが出ます。
TT2=retime(TT1,'regular','linear','SampleRate',100)
エラー: timetable/retime (line 121)
'regular' は、同期のターゲット時間ベクトルの有効な指定ではありません。
synchronizeを使用するときも、引数にregularを使うと同じエラーが出ます。
解決策を教えていただけますと幸いです。

Answers (1)

Atsushi Ueno
Atsushi Ueno on 16 Jan 2023
Edited: Atsushi Ueno on 17 Jan 2023
詳細な経緯は不明ですが、以前のretime関数には 'regular' (一定間隔の意味) を含む構文がありませんでした。
左:R2017aのドキュメンテーション、右:R2022bのドキュメンテーションをキャプチャしたもの
>解決策を教えていただけますと幸いです。
R2017b以前のMATLABにおけるretime関数では、引数 'regular' と'TimeStep' または 'SampleRate' の組み合わせを使えないので、代わりに引数 newTimes を使う構文を使えます。この場合、一定周期でも自分で datetime 関数や duration 関数を用いて時刻列ベクトルデータを作成しなければならないのでちょっと面倒です。
Intensity = [100 98.7 95.2 101.4 99.1]';
Time = milliseconds([11 20 34 40.3 49.9])';
TT1 = timetable(Time,Intensity)
TT1 = 5×1 timetable
Time Intensity __________ _________ 0.011 sec 100 0.02 sec 98.7 0.034 sec 95.2 0.0403 sec 101.4 0.0499 sec 99.1
TT2 = retime(TT1,duration(0,0,0,10:10:50,'Format','mm:ss.SSS')','linear') % ,'Format','mm:ss.SSS'は不要
TT2 = 5×1 timetable
Time Intensity _________ _________ 00:00.010 100.14 00:00.020 98.7 00:00.030 96.2 00:00.040 101.1 00:00.050 99.076
  2 Comments
Atsushi Ueno
Atsushi Ueno on 17 Jan 2023
リサンプルした結果である「出力 timetable の時間間隔」は
この内最後の「サンプルレート (数値[Hz])」は当初「名前と値のペアの引数 'SamplingRate' 」として導入されました。しかし「名前と値のペアの引数」は、TT2 = retime(___,Name,Value) の様に他の引数パターンと自由に組み合わせる事が出来ます。一方「時間ベクトル」には自由な時間間隔を入力する事が出来ます。当時はに「時間ベクトル」と「名前と値のペアの引数」を重複して入力できていたのではないかと想定します。しかしそれではユーザから見て分かり難い仕様です。その為か「名前と値のペアの引数 'SamplingRate' 」は非推奨⇒廃止の流れを辿り、新たに導入された'SampleRate'は「名前と値のペアの引数」ではなく、キーワード'regular'と組み合わせる形の「通常の引数(正式な呼び方がわからない)」になったのではないかと想定します。

Sign in to comment.

Categories

Find more on timetable in Help Center and File Exchange

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!