• 締切済み

MATLABについての質問です(初心者です)。

MATLABについての質問です(初心者です)。 関数のresampleについてどなたかご教授下さい。 200Hzから20Hzにリサンプリングをしたいのですが、なかなかうまくいきません。 例) fname='WAVE004'; fsnew=20*2.56; p=200; [a,t,ndata] = teac2(fname); anew = resample(t,fsnew,p); で処理するとエラーが出てしまします。 a→8×100000、t→8×100000が格納されています。 どのようにすればエラーが出なく、若しくはうまく処理出来るのでしょうか?

みんなの回答

  • Kules
  • ベストアンサー率47% (292/619)
回答No.1

まずどんなエラーが出ているのかわからないと どうしたらいいのかは推測するしかないですね… また、今はMatlabが動かせる環境に私がいませんし、resampleという関数自体使ったことがないので、 http://www.mathworks.co.jp/help/ja_JP/techdoc/ref/resampletscollection.html を見ての回答となりますがご容赦ください。 tsc = resample(tsc,Time) tsc = resample(tsc,Time,interp_method) tsc = resample(tsc,Time,interp_method,code) resampleの使い方はこの3種類みたいですね。tscがリサンプルしたい系列、Timeがリサンプルする時間軸上の基準となるベクトル、interp_methodが内挿法を指定する文字列、codeがリサンプルのためのユーザー定義の整数コードだそうです。 そう思って質問者様が書かれたコマンドを見ると、入力が3つなのに文字列がないことがわかります。 基本的に変数がこのような指定の仕方の場合は順番を入れ替えることはできません。つまり、interp_methodを指定せずにcodeを入力することはできません。 対策としては、「interp_methodも入力としてpの前に与える」ことでしょうか。 参考になれば幸いです。

関連するQ&A