0

現在、取得したデータを処理しています。問題は、測定したい値とセンサーの間に要素があることです(明確にするために、マイクと測定する音の間にパイプがあります)。このパイプは、伝達関数 H を通じて信号 X をフィルター処理します。

このパイプの影響をキャンセルするために、測定された信号をデコンボリューションしたいと考えています (私のマイクは Y=H*X を取得し、X が必要です)。私はHを測定し、それをフィッティングしました:

 0.003682 s^4 + 90.87 s^3 - 4.835e05 s^2 + 1.051e08 s + 4.499e12
 ———————————————————————————————————————————————————————————————
  s^4 + 628.3 s^3 + 1.759e07 s^2 + 2.668e09 s + 4.053e12

標準の matlab 関数を使用して、filter(b,a,Y)H によって引き起こされるフィルタリングを逆にしました。b は H の分母であり、分子は a です...これは H を逆にする必要があります。しかし、デコンボリューションされた信号の代わりに、NaN のベクトルを取得します。

誰かが理由を知っていますか?私にはまったくわかりません。デジタル フィルタリングにはあまり慣れていません...

4

1 に答える 1

2

伝達関数の分母は、分子と同じランクです。つまり、時間 t(k) で出力 y(k) を計算するには、同じ時間 u(k) でコントロールが必要です。場合によっては問題が発生することがあるので、(可能であれば) 他の方法で H を識別してみてください。つまり、分子のランクが分母のランクよりも低い伝達関数を取得します。コマンド ウィンドウに「ident」と入力するだけで、MATLAB のツールボックスを使用できます。

それ以外の場合は、測定した信号に逆 H を掛けることができます。つまり、H の伝達関数 (これは num[H]/den[H]) を取得する場合、信号に den[H]/num[ を掛ける必要があります。 H]。このアプローチは少し遅れる可能性がありますが、この遅れはそれほど重要ではないと思います。

于 2015-04-13T19:24:01.063 に答える