メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

fourier

シンボリック式またはシンボリック関数のフーリエ変換

説明

FT = fourier(f) は、fフーリエ変換を返します。既定では、関数 symvar は独立変数を決定し、w は変換変数です。

FT = fourier(f,transVar) は、w の代わりに transVar を変換変数として使用します。

FT = fourier(f,var,transVar) は、symvar(f,1)w の代わりに vartransVar をそれぞれ独立変数および変換変数として使用します。

すべて折りたたむ

一般的な関数のフーリエ変換を計算します。既定では、w に関して変換されます。

矩形パルス関数のフーリエ変換を求めます。

syms a b t
f = rectangularPulse(a,b,t);
FT = fourier(f)
FT = 

-sin(aw)+cos(aw)iw+sin(bw)+cos(bw)iw

単位インパルス (ディラックのデルタ関数) のフーリエ変換を求めます。

f = dirac(t);
FT = fourier(f)
FT = 1

絶対値関数のフーリエ変換を求めます。

f = a*abs(t);
FT = fourier(f)
FT = 

-2aw2

ステップ関数 (ヘヴィサイド関数) のフーリエ変換を求めます。

f = heaviside(t);
FT = fourier(f)
FT = 

πδdirac(w)-iw

定数のフーリエ変換を求めます。

f = a;
FT = fourier(f)
FT = 2πδdirac(w)i

余弦関数のフーリエ変換を求めます。

f = a*cos(b*t);
FT = fourier(f)
FT = πaδdirac(b+w)+δdirac(b-w)

正弦関数のフーリエ変換を求めます。

f = a*sin(b*t);
FT = fourier(f)
FT = πaδdirac(b+w)-δdirac(b-w)i

符号関数のフーリエ変換を求めます。

f = sign(t);
FT = fourier(f)
FT = 

-2iw

仮定なしで右側の指数関数のフーリエ変換を求めます。

f = exp(-t*abs(a))*heaviside(t);
FT = fourier(f)
FT = 

1|a|+wi-sign(|a|)2-12fourier(e-t|a|,t,w)

a > 0 と仮定して右側の指数関数のフーリエ変換を求めます。フーリエ変換の計算後、仮定を消去します。

assume(a > 0)
FTwithAssumption = fourier(f)
FTwithAssumption = 

1a+wi

assume(a,"clear")

a > 0 と仮定して両側の指数関数のフーリエ変換を求めます。フーリエ変換の計算後、仮定を消去します。

assume(a > 0)
f = exp(-a*t^2);
FTwithAssumption = fourier(f)
FTwithAssumption = 

πe-w24aa

assume(a,"clear")

bc が実数であると仮定してガウス関数のフーリエ変換を求めます。フーリエ変換の計算後、結果を単純化して仮定を消去します。

syms c
assume([b c],"real")
f = a*exp(-(t-b)^2/(2*c^2));
FT = fourier(f);
FTsimplified = simplify(FT)
FTsimplified = 

2aπe-wwc2+2bi2|c|

assume([b c],"clear")

nu = 1 の第 1 種ベッセル関数のフーリエ変換を求めます。結果を単純化します。

syms x
f = besselj(1,x);
FT = fourier(f);
FTsimplified = simplify(FT)
FTsimplified = 

-2wrectangularPulse(-1,1,-w)i1-w2

exp(-t^2-x^2) のフーリエ変換を求めます。既定では、symvar は独立変数を決定し、w は変換変数です。ここで、symvarx を選択します。

syms t x
f = exp(-t^2-x^2);
FT = fourier(f)
FT = 

πe-t2-w24

変換変数として y を指定します。変数を 1 つだけ指定した場合、その変数は変換変数です。symvar が依然として独立変数を決定します。

syms y
FT = fourier(f,y)
FT = 

πe-t2-y24

独立変数を t、変換変数を y としてそれぞれ指定します。

FT = fourier(f,t,y)
FT = 

πe-x2-y24

開始点が –1/2、終点が 1/2 の矩形パルスを作成します。

syms t
f1 = rectangularPulse(-1/2,1/2,t);

そのフーリエ変換を求めます。結果を単純化します。ここでは、フーリエ変換に実数部のみが含まれます。

FT1 = fourier(f1);
FT1 = simplify(FT1)
FT1 = 

2sin(w2)w

fplot を使用して、矩形パルスを 2 行 2 列のタイル表示チャート レイアウトでプロットします。そのフーリエ変換の実数部と虚数部をプロットします。

tiledlayout(2,2)

nexttile
fplot(f1)
xlabel("$t$",Interpreter="latex")
ylabel("$f(t)$",Interpreter="latex")
title("Rectangular Pulse")

nexttile
fplot(real(FT1),[-50 50])
hold on
fplot(imag(FT1),[-50 50])
xlabel("$w$",Interpreter="latex")
ylabel("FT($w$)",Interpreter="latex")
title("Fourier Transform")
legend("Re(FT)","Im(FT)",Location="northeastoutside")

Figure contains 2 axes objects. Axes object 1 with title Rectangular Pulse, xlabel $t$, ylabel $f(t)$ contains an object of type functionline. Axes object 2 with title Fourier Transform, xlabel $w$, ylabel FT($w$) contains 2 objects of type functionline. These objects represent Re(FT), Im(FT).

次に、開始点が 0、終点が 1 の別の矩形パルスを作成します。

f2 = rectangularPulse(0,1,t);

そのフーリエ変換を求めます。ここでは、フーリエ変換に実数部と虚数部の両方が含まれます。

FT2 = fourier(f2)
FT2 = 

sin(w)+cos(w)iw-iw

矩形パルスをプロットします。そのフーリエ変換の実数部と虚数部をプロットします。

nexttile
fplot(f2)
xlabel("$t$",Interpreter="latex")
ylabel("$f(t)$",Interpreter="latex")

nexttile
fplot(real(FT2),[-50 50])
hold on
fplot(imag(FT2),[-50 50])
xlabel("$w$",Interpreter="latex")
ylabel("FT($w$)",Interpreter="latex")
legend("Re(FT)","Im(FT)",Location="northeastoutside")

Figure contains 4 axes objects. Axes object 1 with title Rectangular Pulse, xlabel $t$, ylabel $f(t)$ contains an object of type functionline. Axes object 2 with title Fourier Transform, xlabel $w$, ylabel FT($w$) contains 2 objects of type functionline. These objects represent Re(FT), Im(FT). Axes object 3 with xlabel $t$, ylabel $f(t)$ contains an object of type functionline. Axes object 4 with xlabel $w$, ylabel FT($w$) contains 2 objects of type functionline. These objects represent Re(FT), Im(FT).

t^3 のフーリエ変換を求めます。結果は、ディラックのデルタ関数の 3 次導関数で返されます。

syms t w
FT = fourier(t^3,t,w)
FT = -2πδdirac(w)i

t0 に不連続点があるヘヴィサイド関数のフーリエ変換を求めます。

syms t0
FT = fourier(heaviside(t - t0),t,w)
FT = 

e-t0wiπδdirac(w)-iw

詳細のセクションで説明するように、c および s はフーリエ変換のパラメーターです。既定では、fourier 関数は c=1s=-1 を使用します。ただし、これらのパラメーター値は sympref を使用して変更できます。

フーリエ変換のパラメーターの既定値を使用して、t*exp(-t^2) のフーリエ変換を計算します。

syms t w
f = t*exp(-t^2);
FT = fourier(f,t,w)
FT = 

-wπe-w24i2

sympref を使用して、フーリエ変換のパラメーターを c = 1s = 1 に変更し、変換を再計算します。結果が変わります。

sympref("FourierParameters",[1 1]);
FT = fourier(f,t,w)
FT = 

wπe-w24i2

フーリエ変換のパラメーターを c = 1/(2*pi)s = 1 に変更し、変換を再計算します。結果が変わります。

sympref("FourierParameters",[1/(2*sym(pi)) 1]);
FT = fourier(f,t,w)
FT = 

we-w24i4π

sympref を使用して設定したシンボリック設定は、現在およびこれ以降の MATLAB® セッションを通じて維持されます。FourierParameters を "default" に設定して、c および s の設定を既定値に戻します。

sympref("FourierParameters","default");

行列 M のフーリエ変換を求めます。同じサイズの行列を使用して、各行列要素の独立変数と変換変数を指定します。引数が非スカラーである場合、fourier は各要素に適用されます。

syms a b c d w x y z
M = [exp(x) 1; sin(y) 1i*z];
vars = [w x; y z];
transVars = [a b; c d];
FT = fourier(M,vars,transVars)
FT = 

(2πexδdirac(a)2πδdirac(b)-πδdirac(c-1)-δdirac(c+1)i-2πδdirac(d))

fourier をスカラーと非スカラーの両方の引数で呼び出した場合、スカラー拡張を使用して非スカラー引数と一致するようスカラー引数を拡張します。非スカラー引数のサイズは同じでなければなりません。

FT = fourier(x,vars,transVars)
FT = 

(2πxδdirac(a)2πδdirac(b)i2πxδdirac(c)2πxδdirac(d))

fourier が入力を変換できない場合は、未評価の呼び出しが返されます。

syms f(t) w
FT = fourier(f,t,w)
FT = fourier(f(t),t,w)

ifourier を使用して元の式を返します。

f = ifourier(FT,w,t)
f = f(t)

一連の 1 次元フーリエ変換を各独立変数に個別に適用することで、2 次元フーリエ変換を求めます。

この例では、フーリエ変換のパラメーターを c=1s=2π に設定し、2 次元フーリエ変換の式が次を満たすようにします。

F(u,v)=--f(x,y) ei(2πux+2πvy) dx dy.

これらのパラメーターは sympref を使用して指定できます。

sympref("FourierParameters",[1 2*sym(pi)]);

幅が a、高さが b の原点に位置する 2 次元の単位矩形の 2 次元フーリエ変換を求めます。1 次元フーリエ変換を変数 x に対して実行し、その後に変数 y に対して実行します。結果を単純化します。

syms x y a b real
f(x,y) = rectangularPulse(-a/2,a/2,x)*rectangularPulse(-b/2,b/2,y);
syms u v
FT = fourier(f,x,u);
FT = fourier(FT,y,v);
FT = simplify(FT)
FT = 

sin(πau)sin(πbv)uvπ2

xy の両方向の標準偏差が σ である 2 次元ガウス関数のフーリエ変換を求めます。

syms sigma real
f(x,y) = 1/2/sym(pi)/sigma^2*exp((-x^2-y^2)/2/sigma^2);
syms u v
FT = fourier(f,x,u);
FT = fourier(FT,y,v);
FT = simplify(FT)
FT = e-2σ2π2u2+v2

(x,y)=(0,a)(x,y)=(0,-a) に位置する 2 点のソースのフーリエ変換を求めます。

f(x,y) = 1/2*dirac(x)*(dirac(y-a)+dirac(y+a));
FT = fourier(f,x,u);
FT = fourier(FT,y,v);
FT = simplify(FT)
FT = cos(2πav)

単位円の開口部のフーリエ変換を求めます。heaviside 関数を使用して単位円を定義します。

f(x,y) = heaviside(x^2+y^2-1);
FT = fourier(f,x,u);
FT = fourier(FT,y,v)
FT = fourier(fourier(heaviside(x2+y2-1),x,u),y,v)

ここでは、fourier 関数が入力関数を変換できず、未評価の呼び出しが返されます。別の方法として、fft2関数を使用すると、2 次元フーリエ変換を数値的に求めることができます。円形の開口部の 2 次元フーリエ変換を求める方法の例については、2 次元フーリエ変換を参照してください。

sympref を使用して設定したシンボリック設定は、現在およびこれ以降の MATLAB セッションを通じて維持されます。既定の設定に戻します。

sympref("default");

入力引数

すべて折りたたむ

シンボリック式、シンボリック関数、シンボリック ベクトルまたはシンボリック行列で指定される入力。

変換変数。シンボリック変数、シンボリック式、シンボリック ベクトルまたはシンボリック行列として指定します。この変数は、多くの場合 "周波数変数" と呼ばれます。既定では、fourierw を使用します。wf の独立変数の場合、fourierv を使用します。

独立変数。シンボリック変数、シンボリック ベクトルまたはシンボリック行列として指定します。この変数は、多くの場合 "時間変数" または "空間変数" と呼ばれます。この引数を指定しない場合、fourier は関数 symvar(f,1) を使用して独立変数を決定します。

詳細

すべて折りたたむ

ヒント

  • いずれかの引数が配列である場合、fourier は配列の全要素について要素単位で動作します。

  • 1 番目の引数がシンボリック関数を含む場合、2 番目の引数はスカラーでなければなりません。

  • 逆フーリエ変換を計算するには、ifourier を使用します。

  • fourierpiecewise を変換しません。代わりに、関数 heavisiderectangularPulse、または triangularPulse を使用して piecewise を書き換えてください。

参照

[1] Oberhettinger, Fritz. Tables of Fourier Transforms and Fourier Transforms of Distributions. Berlin, Heidelberg: Springer Berlin Heidelberg, 1990.

バージョン履歴

R2006a より前に導入