• 締切済み

MATLABのremezのエラーについて(FAILURE TO CONVERGE)

MATLABのバージョンは6.0.0.88のリリース12を使用しています。 プログラム内ではループで回してFの値を適切な値に変化させつつremez(N,F,A,W)を使用して設計ができるようにしています。 N=10, 12, 16, 18の場合は問題なく設計できるのですが、N=14の時だけ下のようなエラーがでます。 *** FAILURE TO CONVERGE *** Probable cause is machine rounding error. Number of iterations = 4 警告: If the number of iterations exceeds 3, the design may be correct, but should be verified with freqz. もしくは *** FAILURE TO CONVERGE *** Probable cause is machine rounding error. Number of iterations = 5 警告: If the number of iterations exceeds 3, the design may be correct, but should be verified with freqz. です。 すこし自力で調査した結果、同じN=14でも、設定する周波数Fによってこのエラーが出たり出なかったりします。 次のパラメータのときのエラーが出るFとエラーが出ないFの具体例を挙げます。 N = 14; A = [1 1 0 0 0 0] W = [10 10 1]; ・エラーの出るFの具体例: F = [ 0 0.0315 0.5156 0.9032 0.9033 1 ]; ・エラーが出ないFの具体例: F = [ 0 0.0315 0.5156 0.9062 0.9063 1 ]; F = [ 0 0.0315 0.5156 0.8945 0.8946 1 ]; F = [ 0 0.0320 0.5234 0.9169 0.9170 1 ]; どうしても14次で設計したいのでかなり困っております。 なにか対処方法はないでしょうか?

みんなの回答

  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.2

#1です。 すみません。 Wの設定は、[10 10 1]ですのでおかしくないですね。

  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.1

出力されているのはエラーではなく警告ですので、結果は得られているんじゃないですか? この警告が出てもフィルタの設計は正しい場合があるようですので、得られた結果を検証した方が良いのでは?警告にもfreqz()で確認するように出ています。 Fの設定は、特におかしくないように見えます。 ただ、Wの設定が長すぎないですか? リファレンスには、WはF、Aの1/2の長さで設定すると書いていますが。 ■remez関数 http://dl.cybernet.co.jp/matlab/support/manual/r13/toolbox/signal/?/matlab/support/manual/r13/toolbox/signal/remez.shtml

ikneg
質問者

補足

すみません、エラーではなかったのですね。 得られた結果は間違ったフィルタ設計になっていましたので、 エラーとしてしまいました。 >この警告が出てもフィルタの設計は正しい場合があるようですので、得られた結果を検証した方が良いのでは? はい、得られた結果はfreqz()ではやっていませんが、他の方法で検証済みです。 間違った結果が得られています・・・。

関連するQ&A