• 締切済み

離散フーリエ変換による復元でのK(z)=0となる場合の対処方法

hot-ICの回答

  • hot-IC
  • ベストアンサー率87% (7/8)
回答No.3

逆フィルタ(逆システム)を求める問題ですね. 他の方が解答されているように,とんでもない値が出てくる事の方が多いです. フーリエ変換を使った方法は,解が安定で無い事が知られています. kのモデルが分かっているなら,入出力関係からパラメーター推定ができるはずです. 適応フィルタを使って逆フィルタを求める方法もあるようです. http://www.tk.elec.waseda.ac.jp/~koba/class_info/signal/S8.pdf

参考URL:
http://www.tk.elec.waseda.ac.jp/~koba/class_info/signal/S8.pdf

関連するQ&A

  • 離散フーリエ変換について

    G(n/Nτ)= Σ[k=0->N-1] {τ*f(kτ)*e^(-i2πkn/N)} 上記の式は離散フーリエ変換の式らしいですが、 これを関数化しようとしてつまずいています。 どのように解釈すれば、関数化できるのでしょうか? 特に、複素数iがよくわかりません。 e^iが点を左に90度回転させるくらいはわかります。 e^(-i2πkn/N)を関数powで表現できなくて困っていますが、多分見当違いだとは思います。 フーリエ級数展開はわかります。 最終的にはFFTを行いたいのですが、 その理解の前に離散フーリエ変換ができないといけないと思っています。 よろしくお願いします。 void GraphClass::ScatteredFourierConvert() { /* N-1 G(n/Nτ)= Σ {τ*f(kτ)*e^(-i2πkn/N)} k=0 k=何番目の値か? τ=値を読んだ間隔 N=値を読んだ数 */ int Tau=10; int N=RangeSize.cx*2/Tau; double Sum=0; double e=2.7182818; for(int k=0;k<N-1;k++) { Sum+=Tau*Data[k*Tau]*pow(e,-i*2*PI*k*n/N); } }

  • 離散フーリエ変換について

    double DiscreteFourierTransformClass::DiscreteFourierTransformProcess(int n) { double e=2.7182818; double Pai=3.1415926535; int Tau=10; int N=DataLen/Tau; double Sum=0; for(int k=0;k<N;k++) { Sum+=Tau*Data[k*Tau]*pow(e,i*2*Pai*k*n/N); } return Sum; } Tau*Data[k*Tau]=帯 pow(e,i*2*Pai*k*n/N)=ほしい周波数の乗算 ということで、離散フーリエ展開と同じなのでしょうか? パソコン上で計算するには、離散フーリエ展開で計算して、 FFTというのは、pow(e,i*2*Pai*k*n/N)この回転子が3,4個程度のcos,sinで決まるから その値で計算すれば高速になるよということでしょうか? 離散フーリエ変換 G(n/N)=Σ[k=0::N-1]{τ*f(kτ)e^-i2πkn/N} k:何番目の値か τ:値を読んだ間隔 N:値を読んだ数 n:基本周波数の何倍か G(n/N)->ほしいnの成分を得る

  • 離散フーリエ変換

    フーリエ変換を計算機で扱う場合について聞きたいです。 ある関数(例えばsin(x))を離散フーリエ変換しようとして、まずxを0.1ずつ増やしながらsin(x)をサンプリングします。これを虚部を0として複素数にします。 この後、複素数のフーリエ変換を行い結果が得られます。 と、ここまでは正しいと思うのですが、 その後が分かりません。 文献などに載っているフーリエ変換後のグラフは、横軸が周波数νで、縦軸がf(ν)です。 このグラフと合うようにするには 横軸・縦軸には何をとればいいのでしょうか? 横軸が周波数って言うのは、この場合は1/0.1のことでしょうか? 教えて頂きたいです。お願いします。

  • 2次元離散フーリエ変換について

    2次元離散フーリエ変換の2次元FFTを用いて、縦256×横256 縦1024×横1024の場合の画像を大きさを求めてもらいたいです。 2次元フーリエ変換について調べたのですが理解することが出来ませんでした。 お手数ですが回答お願いします

  • 高次フーリエ変換のプログラム

    お尋ねします。 1次元のデータ(例えば時系列)をフーリエ変換して周波数による系列に置き換えるプログラム(その逆も)は良く見かけます。FFTなどですね。周波数空間と時間空間の行き来に対応します。 一方、2次元、3次元に対応した高次フーリエ変換のプログラムがダウンロードできないでしょうか。3次元ということは空間ということになり、波数空間と実空間の行き来を可能にするものです。高次のFFTとなるでしょうか。入力としては3次元の空間離散化されたデータA(x,y,z)で、変換されるとA(k1,k2,k3)(離散化)のデータです。その逆もあり、というものです。 スペクトル法などによる数値計算を考えていますが、変換の部分は出来合いのものを使いたいと思っています。よろしくお願いします。

  • ラプラス変換とフーリエ変換について教えて下さい。

    ラプラス変換とフーリエ変換の違いは後者が虚数だけなのに対して、前者はそれを拡張して複素数に使えるようにしたものであるということ分かるのですが、その使い分け方がさっぱり分かりません。 ・一般的に微分方程式を解くときにはラプラス変換を用いますが、これをフーリエ変換でしないのはなぜなのでしょうか? ・逆格子ベクトルを作るときや、スペクトラムアナライザーではフーリエ変換を使いますが、これをラプラス変換でしてはいけないのでしょうか? ・計算機用にフーリエ変換にはFFTというものがありますが、ラプラス変換を離散的にしたZ変換の計算機用に速くしたものがないのはなぜなのでしょうか? よろしくお願い致します。

  • 離散フーリエ変換について

    離散フーリエ変換によって得られた値についての質問です。 多くのサイトでその値は Σ(k=0~N-1) f(k)exp(-2πkni/N) という式から求められるとあります。 離散フーリエ変換は本来、ある周期関数が、どのくらいの振幅でどのくらいの周波数の波からできているかを調べるために行うものだと思います。 しかし上記の公式から得られるスペクトル(sqrt(Re^2+Im^2))では振幅の値は得られません。振幅を得るには刻み幅Δ(関数をサンプリングした際の幅)を乗じて Σ(k=0~N-1) f(k)exp(-2πkni/N)*Δ とすれば得られることが分かりました。 最初の公式から得られるスペクトルはなにを表しているのでしょうか?またなぜ刻み幅Δを乗じることで、振幅が求まるのでしょうか? よろしくお願いします。m(__)m

  • C言語プログラムの離散フーリエ変換

    C言語プログラムの離散フーリエ変換について教えてください。「C言語による画像再構成の基礎」という本のプログラムをもとに二次元画像をDFT(通常の離散フーリエ変換)→InveresFFT(逆高速フーリエ変換)すると画像が左右反転、上下反転してしまいます。DFT→InverseDFTやFFT→InverseFFTだとそのようにはなりません。通常のDFTとFFTのアルゴリズムの違いからしかたがないのでしょうか?それともプログラムの変更で修正できるのでしょうか?どうしてもDFT→InverseFFTでがぞうをもとに戻したいのです。 サンプルページ http://www.iryokagaku.co.jp/frame/03-honwosagasu/370/370-dl.html P4-14fourier2d1d.c (離散フーリエ変換DFT)   P4-15fft.c(高速フーリエ変換)プログラムです

  • 離散フーリエ変換の性質について

    現在デジタル信号処理の分野について学習しているのですが、離散フーリエ変換の性質、線形性として、 時間領域:ax(n) 周波数領域:aX(k) の関係が成立しますが、 時間領域??? 周波数領域:g(k)X(k) のように周波数領域で、定数ではなく関数(g(k):実数)が掛け合わされたときに、時間領域ではどのような関係が成立するかなにかありますでしょうか? 計算しても求めることがまだできないため、誰か知っている人がいたら教えてください。

  • 離散フーリエ変換の対称定理について

    離散フーリエ変換において、 Re[X(k)]=Re[X(N-k)] Im[X(k)]=-Im[X(N-k)] |X(k)|=|X(N-k)| といった対称定理が成り立ちます。 数学的にこれらが成り立つということは、大体理解できたのですが、直感的な意味が分かりません。 僕の理解が正しいとしたら、N=128だとしたら、 N=1の極めて周期の大きな波と、N=127の極めて周期の短い波の、 振幅スペクトル(≒振幅?)が等しいということになると思うのですが、どうしても納得が行きません。 N>64の周波数をフィルターでカットした場合も、対称定理は成り立ち、N>64の周波数の波は出てくる(というか、カットしないと、エイリアシングが生じる)と思うのですが、どういうことなのでしょうか? N>64の周波数の波は、計算上は出てくるが、実際にはそのような波は存在しないのですか? あるいは、N>64の周波数同士の波で、上手く相殺されて、逆離散フーリエ変換をしたときには、影響が出ないということなのですか? また、通常のフーリエ変換では、対称定理は成り立たないと思うのですが、そのことも併せて教えて頂けたらと思います。 よろしくお願いします。