FFTの結果の非対象性について

このQ&Aのポイント
  • FFTの結果で腑に落ちない点があります。対称な2次元関数f(x, y)をFFTした結果F(X, Y)が非対称となりました。具体的には、0.5だけずれました。
  • もとの関数では、3.5で対称ですが、結果では、4.0で対称となっています。(実際には、N=256です)FFTには「FFTW」と自分でコーディングしたものを用いましたが、同じ結果です。
  • どのように解釈したら良いのでしょうか?
回答を見る
  • ベストアンサー

FFTの結果の非対象性について

FFTの結果で腑に落ちない点があります。 対称な2次元関数f(x, y)をFFTしたところ、 結果F(X, Y)が非対象となりました。 具体的には、0.5だけずれました。 もとの関数では、3.5で対称ですが、結果では、4.0で対称となっています。(実際には、N=256です) FFTには「FFTW」と自分でコーディングしたものを用いましたが、 同じ結果です。 どのように解釈したら良いのでしょうか? よろしくお願いします。 f(x, y): 0 1 2 3 4 5 6 7 --------------- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 2 4 4 2 0 0 0 0 2 4 4 2 0 0 0 0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F(X, Y): 0 1 2 3 4 5 6 7 --------------- Z 0 0 0 X 0 0 0 Z 0 A A X A A 0 Z 0 A B X B A 0 Z X X X X X X X Z 0 A B X B A 0 Z 0 A A X A A 0 Z 0 0 0 X 0 0 0 Z Z Z Z Z Z Z Z (値は適当です)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

腑に落ちないといわれますが、それはそういうものではないでしょうか。 たぶん、原点についての勘違いかもしれないと思うのです、次のように。 原点対称な関数をFFTしたつもりだということでしょうが、 普通、離散フーリエの世界ではもとのf(x,y)の表の左下隅のデータが原点に位置するという扱いで、表の中心が原点ではありません。周波数面でも左下隅のデータが原点(dc)。 したがって、次の二点を確認してみてください。 (1)その計算プログラムではデータのどこが原点(x=0,y=0)として扱われるのか。 (2)もしほんとにこの例のデータが原点対称として扱われているのであれば、FFT結果は実数部のみ、虚数部は無いはずですが確認してみてください。きっと虚数部はしっかり出ているのでは?

vvvf8000
質問者

お礼

ありがとうございます。 ご指摘のとおりでした。(その1では、虚数部非ゼロ) 入力その1 0.00, 0.00, 0.00, 0.00 0.00, 1.00, 1.00, 0.00 0.00, 1.00, 1.00, 0.00 0.00, 0.00, 0.00, 0.00 結果R: 4.00, -2.00, 0.00, -2.00 -2.00, 0.00, 0.00, 2.00 0.00, 0.00, 0.00, 0.00 -2.00, 2.00, 0.00, 0.00 結果I: 0.00, -2.00, 0.00, 2.00 -2.00, 2.00, 0.00, 0.00 0.00, 0.00, 0.00, 0.00 2.00, 0.00, 0.00, -2.00 入力その2 0.00, 0.00, 0.00, 0.00 0.00, 1.00, 1.00, 1.00 0.00, 1.00, 1.00, 1.00 0.00, 1.00, 1.00, 1.00 結果R: 9.00, -3.00, -3.00, -3.00 -3.00, 1.00, 1.00, 1.00 -3.00, 1.00, 1.00, 1.00 -3.00, 1.00, 1.00, 1.00 結果I: 0.00, 0.00, 0.00, 0.00 0.00, 0.00, 0.00, 0.00 0.00, 0.00, 0.00, 0.00 0.00, 0.00, 0.00, 0.00

関連するQ&A

  • 線形代数の難問です

    線形代数の問題ですが、解答・解説が無いため困っています。 f(x,y,z)=3x^2+3y^2+2z^2-2xz-4yz-2z 1)この関数をf(x,y,z)=(x y z)A(x y z)'+b(x y z)'+c とした時のA,b,cを求めよ。(Aは対称行列、bは行ベクトル、cはスカラー、(x y z)'は列ベクトル) 2)行列Aの行列式の値と固有値を求めよ。 3)関数fの極値点とその時の関数の値を求めよ。また、その極値点が最小点、最大点、鞍点のいずれになるかを書け。 4)f(x,y,z)=27となる曲面と直線(x-1)/2=(y+1)/1=(z-3)/1との交点を求めなさい。 1),2)は自信がないですが答えが出たのであっているでしょうか? 1)はAをa,b,c,dの4つの文字で表し、Aは 3 0 -1 0 3 -2 -1 -2 3 b=(0 0 -z-2)' c=0 2)は行列式が-6、固有値が3,3±√5 3)以降はよくわからないので詳しい方解答・解説をおねがいします。

  • 平面ベクトルの例題

    次の問題の解答がよくわからないです 3次元空間において、原点を通り法線ベクトルが(a,b,c)である平面pがある。空間の点(x,y,z)に対し平面に関して対称の位置にある点を(x',y',z')とする。x',y',z'をa,b,c,x,y,zで表せ。  たぶん a(x+x'/2 -x)+b(y+y'/2 -y)+c(z+z'/2 -z)=0になると思いますがそこからそれぞれをabcxyzのみでどう表すのかわかりません。 教えてください。

  • ラグランジュの未定乗数法

    いつも有り難く利用させていただいております。 今回は、ラグランジュの未定乗数法について少々お聞きしたいのですが、 http://www004.upp.so-net.ne.jp/s_honma/derivative/lagrange.htm のラグランジュの未定乗数法の説明のところで、("A_x"でAをxで偏微分することを意味している) 制約条件をG( x , y , z )=0 、( a , b , c )で、極致を求めたい関数をF(x , y , z )としておくと、  このとき、G( x , y , z )=0 から、z が x , y の関数になっているとすると、関数F は x , y の関数になるので、( a , b , c )において、       F_x+F_z・z_x=0 、 F_y+F_z・z_y=0 が成り立つ。  ここで、z_x 、z_y は、次の式により与えられる。       G_x+G_z・z_x=0 、 G_y+G_z・z_y=0 そこで、( a , b , c )における -F_z/G_z の値を、λ とおくと、 F_z+λG_z=0 が成り立ち、 さらに、F_x+λG_x=0 、 F_y+λG_y=0 が成り立つ。  したがって、4つの式 G=0 、F_x+λG_x=0 、F_y+λG_y=0 、F_z+λG_z=0 を解くことにより、極値を与える候補の点( a , b , c )が求められる。 と、記載されているのですが、 G( x , y , z )=0 から、z が x , y の関数になっているとすると、関数F はx , y の関数になるので、( a , b , c )において、       F_x+F_z・z_x=0 、 F_y+F_z・z_y=0 が成り立つ。  ここで、z_x 、z_y は、次の式により与えられる。       G_x+G_z・z_x=0 、 G_y+G_z・z_y=0 の部分の、 F_x+F_z・z_x=0 、 F_y+F_z・z_y=0 と、 G_x+G_z・z_x=0 、 G_y+G_z・z_y=0 の式はどのようにして出てきているのでしょうか?

  • FFTのDC成分って、なんで大きくなるんですか?

    2次元に限らず、1次元でも、 FFTをするとDC成分(X=0)の値がとっても大きくなります。 エクセルで32行の1次元FFTをすると DC成分だけ数万で、AC成分が実数も虚数も数十程度の値が出るんですよ~ なぜ? ちょっとした画像の2次元FFTしたものを添付します。 X軸とY軸がとっても白いのは、 DC成分がでかい影響なんです。 どうしてこれが問題かと言うと、別の信号と相関を取るとき、 DC成分だけバカでかいと、それに引っ張られてしまい、 AC成分は微妙に違うのに相関係数=100%!!とか 出力しちゃってどうしよう!ってなる訳です。 工夫のしどころ、とも考えられますが、理由が知りたいのです。 数学的に分かっていることでしょうか~?

  • 窓関数の処理の仕方によるFFT結果の違いについて

    ある1周期分のデータX(n)={X0,X1,・・・,Xn-1}があるとき(nは2の乗数)、ハミング窓関数K=0.54-0.46cos(2πn/N-1)を以下のように処理 (1)Y(n)=K*X(n) (2)Y(n)=K*X(n)+A (3)Y(n)=K*{X(n)+A} ただし、AはX(n)の平均値。 ここで、Y(n)をFFTした場合の違いについてシミュレーションしましたが、振幅スペクトルの結果が次のようになりました。  (1)と(2)は0次のみ異なる(1次以降は同じ)  (2)と(3)((1)と(3))は0次と1次が異なる(2次以降は同じ) 【質問1】 (2)と(3)の2次以降が同じになる理由はどうしてでしょうか。

  • ラグランジュの未定乗数法

    条件g(x,y)=0の下で、z=f(x,y)の極値を求める。 g(x,y)=0は、xとyの陰関数でありz軸に平行なある曲面を表す。 z=f(x,y)の全微分は、dz=(∂f/∂x)*dx+(∂f/∂y)*dyより、(dz/dx)=(∂f/∂x)*1+(∂f/∂y)*(dy/dx) dz/dx=f_x(x,y)+f_y(x,y)*(dy/dx) ここでzは、g(x,y)=0の条件によりxの1変数関数となっている。 一方、z=g(x,y)とすると、z=g(x,y)=0となり、これは恒等的に0である。よって、全微分もdz=(g_x)*dx+(g_y)*dy=0となる。 dy/dx=-g_x(x,y)/g_y(x,y) dz/dx=f_x(x,y)-[{f_y(x,y)*g_x(x,y)}/g_y(x,y)] (x,y)=(a,b)の点で、この曲線が極値をもつとき、dz/dx=0となる。 dz/dx=f_x(a,b)-[{f_y(a,b)*g_x(a,b)}/g_y(a,b)] f_x(a,b)={f_y(a,b)*g_x(a,b)}/g_y(a,b) g_x(a,b)≠0のとき、両辺をg_x(a,b)で割り、{f_x(a,b)/g_x(a,b)}={f_y(a,b)/g_y(a,b)} ここで、{f_x(a,b)/g_x(a,b)}={f_y(a,b)/g_y(a,b)} =λとおくと、f_x(a,b)=λ*{g_x(a,b)}, f_y(a,b)=λ*g_y(a,b) このλが未定乗数である。 質問がいくつかあります。 まず、初めに条件になっている『g(x,y)=0はz軸に平行な曲面を表す』とあります。これは、z=g(x,y)=0とは違いますよね? z=g(x,y)=0はz=0なので、xy平面上の関数になり、z軸に平行な曲面にはならないと思うのですが。 次に、全微分可能な関数z=f(x,y)の全微分はdz=f_x(x,y)dx+f_y(x,y)dyと表され、これは∂z/∂x=f_x(x,y)+f_y(x,y*)(dy/dx)と表す事ができ、この左辺はzがxとyの2変数関数のためdz/dxとならずに∂z/∂xとなっています。この証明においてz=f(x,y)の全微分を求める際に『ここで、zはg(x,y)=0の条件により、xの1変数関数となっている』とありますが、これはどういう意味でですか? z=f(x,y)の曲面とg(x,y)=0の曲面が交わった所は曲線になるのは分かります。そしてこの曲線はxの値を一個定めると、それによってyの値が決まるので、zも決まる。よってzはxの1変数関数となるのでしょうか? そして、『z=g(x,y)とおくと、z=g(x,y)=0とおくと、これは恒等的に0。よって、その全微分もdz=(g_x)*dx+(g_y)*dy=0』とありますが、まずこの意味を簡単に説明していただけますか。『よって』の前後がどう繋がっているのが分かりません。『z=g(x,y)=0とおく』となっていますが、この場合z=g(x,y)=0は前述したようにxy平面上のグラフになると思うのですが、なぜg(x,y)=0をz=g(x,y)=0と置き換えたのかが分かりません。dy/dxの値を求めるためでしょうか? 自分の書いた所に、誤解やちんぷんかんぷんで意味が分からない所があれば指摘してください。

  • 高等学校数学の二次関数について

    こんばんは。 二次関数についてで質問があります。 ある一つの問題なのですが、文の一部に分からない表現がありました。 下に記します。 :放物線 y=x^2+ax+a を原点に関して対称移動し、(中略) 定数a,bの値を求めよ。 この問題の中に、放物線~を原点に関して対称移動し とありますが、これはどういうことでしょうか? 解説文によると、 ・放物線 y=f(x) を原点に関して対称移動すると、 -y=f(-x) よって、y=x^2+ax+a は y=-(x^2)+ax-a に移る。 とのことですが、何故このような結果になるのでしょうか? また、原点に関して対称移動とはどういうことなのでしょうか? 解説をお願い致します。

  • MATLABを用いたFFT

    現在40kHzの正弦波をMATLABを用いてFFTをかけましたがしかし思った結果になりません。作成したmファイルの内容は以下のとおりです。 data = xlsread('test001.xls','Sheet1');   %excelファイルの読み込み data = data(:,2);   %2列目を選択 Y = fft(data);    %fft Pyy = Y.*conj(Y)/2500; %スペクトルを求める f = 40000 * (0:2499)/2500;          %範囲を指定 plot(f,Pyy(1:2500))             %グラフを作成 本当に困っているので、解答お願いします。

  • 4次元フーリエ変換による音波の解析について

    4次元フーリエ変換f(x,y,z,t) → F(kx,ky,kz,ω)についての質問です. 現在,独学で,FFTを用いて音波f(x,y,z,t)を解析しようとしています. ここで,4次元フーリエ変換 f(x,y,z,t) → F(kx,ky,kz,ω) を行った場合,Fは一体どのような意味を持つ値なのでしょうか. また,この4次元フーリエ変換を用いて,波数kと周波数ωの関係を表すにはどうすれば良いでしょうか. どうかご回答よろしくお願いいたします.

  • スカラー場のデルタ関数の性質について

    スカラー場   f(x,y,z) のデルタ関数   δ(f(x,y,x)) の性質について質問します. この δ(f(x,y,x)) と,δ(x,y,x) の関係はどのようになるのでしょうか? f(x,y,z) = 0 を満たすある一つの (a,b,c) については, δ(f(x,y,x)) = ( 1 / |grad f(a,b,c)| ) δ(x-a, y-b, z-c) となると思いますが,f(x,y,z) = 0 を満たす点が無限にあると考えると, よく分からなくなってしまいます. どのように考えればよいのでしょうか? また, ∫∫∫δ(f(x,y,x)) dxdydz は,積分した体積に含まれる等位面 f(x,y,z) = 0 の面積となりますでしょうか? 勉強不足で申し訳ありませんが, どなたかご教示いただければ幸いです.