FFT海浪模拟——理论部分整理(一)

1.频谱、傅里叶变换及其逆变换的概念

0)信号的表示

自变量为x的函数f(x)可看作一个随空间变化的信号(空域信号),只要满足一定条件,它就可以表示为一堆不同频率的随空间变化的正弦信号(空域正弦信号)的线性组合(或积分)

1)频谱

i.正弦信号(称为基底)的频率构成频域。如果将频域作为定义域,相应频率基底的振幅和相位作为函数值,则得到一个新函数F(ω)。称为信号f(x)的频谱。

ii.而频域分析是将信号从时域(时间域)空域转换为**频域(频率域)**的过程。在频域中,信号可以表示为不同频率的成分或频谱

2)傅里叶变换及其逆变换

i.傅里叶变换:已知信号的表示方式求解频谱的过程

ii.傅里叶逆变换:已知频谱求解信号的表示方式

2.傅里叶变换的形式

1)正弦信号形式(带相位)

f ( x ) = ∑ ω A ( ω ) ∗ s i n ( ω x + ϕ ( ω ) ) f(x)=\sum_{\omega}A(\omega) * sin(\omega x+\phi(\omega)) f(x)=ωA(ω)sin(ωx+ϕ(ω))

相应的频谱形式为
F ( ω ) = ( A ( ω ) , ϕ ( ω ) ) F(\omega)=(A(\omega),\phi(\omega)) F(ω)=(A(ω),ϕ(ω))

2)正余弦信号形式(不带相位)

f ( x ) = ∑ ω [ A 1 ( ω ) ∗ c o s ( ω x ) + A 2 ( ω ) ∗ s i n ( ω x ) ] f(x)=\sum_{\omega}[A_1(\omega)*cos(\omega x)+A_2(\omega)*sin(\omega x)] f(x)=ω[A1(ω)cos(ωx)+A2(ω)sin(ωx)]

此时频谱形式为
F ( ω ) = ( A 1 ( ω ) , A 2 ( ω ) ) F(\omega)=(A_1(\omega),A_2(\omega)) F(ω)=(A1(ω),A2(ω))

3)复数为指数的信号形式

首先根据欧拉公式
e i θ = c o s ( θ ) + i s i n ( θ ) e^{i\theta}=cos(\theta)+isin(\theta) eiθ=cos(θ)+isin(θ)
以空域形式表示时,可令
θ = ω x \theta=\omega x θ=ωx
可得
c o s ( ω x ) = e i ω x + e − i ω x 2 s i n ( ω x ) = e i ω x − e − i ω x 2 i cos(\omega x)=\frac{e^{i\omega x}+e^{-i\omega x}}{2}\\ sin(\omega x)=\frac{e^{i\omega x}-e^{-i\omega x}}{2i} cos(ωx)=2ex+exsin(ωx)=2iexex
这样就可将信号表示为
f ( x ) = A 1 ( 0 ) + ∑ ω ( ω > 0 ) A 1 ( ω ) − i A 2 ( ω ) 2 e i ω x + ∑ ω ( ω > 0 ) A 1 ( ω ) + i A 2 ( ω ) 2 e − i ω x 进行 f(x)=A_1(0)+\sum_{\omega (\omega>0)}\frac{A_1(\omega)-iA_2(\omega)}{2}e^{i\omega x}+\sum_{\omega(\omega>0)}\frac{A_1(\omega)+iA_2(\omega)}{2}e^{-i \omega x}进行 f(x)=A1(0)+ω(ω>0)2A1(ω)iA2(ω)ex+ω(ω>0)2A1(ω)+iA2(ω)ex进行
由于A的取值只能为正数,可对A1进行偶延拓,对A2进行奇延拓(此处省略大量过程)

最后可将信号和频谱的关系表示为
f ( x ) = ∑ ω F ( ω ) e i ω x f(x)=\sum_\omega F(\omega)e^{i\omega x} f(x)=ωF(ω)ex

3.海面的逆傅里叶变换模型(FFT)

1)海面高度的表示

i.模型及基本参数解释
h ( x ⃗ , t ) = ∑ k ⃗ h ~ ( k ⃗ , t ) e i k ⃗ ⋅ x ⃗ h(\vec{x},t)=\sum_{\vec{k}}\tilde{h}(\vec{k},t)e^{i\vec{k} \cdot \vec{x}} h(x ,t)=k h~(k ,t)eik x
a.其中
x ⃗ = ( x , z ) \vec{x}=(x,z) x =(x,z)
为空域坐标

b.而
k ⃗ = ( k x , k z ) \vec{k}=(k_x,k_z) k =(kx,kz)
为频域坐标,两个分量均表示频率

c.则
h ~ ( k ⃗ , t ) \tilde{h}(\vec{k},t) h~(k ,t)
即为海面高度表示中的频谱,参数t表示高度和频谱会随时间变化

ii.参数的取值

在上式中
e i k ⃗ ⋅ x ⃗ = e i ( k x ⋅ x + k z ⋅ z ) e^{i\vec{k} \cdot \vec{x}}=e^{i(k_x\cdot x+k_z\cdot z)} eik x =ei(kxx+kzz)
表示固定z,只让x变化时频率为 k_x ;固定x,只让z变化时频率为k_z。

对于向量k的取值,可用如下方式表示:
k x = 2 π x i L , x i ∈ { − N 2 , − N 2 + 1 , . . . , N 2 − 1 } k z = 2 π z i L , z i ∈ { − N 2 , − N 2 + 1 , . . . , N 2 − 1 } k_x =\frac{2\pi x_i}{L}, x_i\in \{ -\frac{N}{2},-\frac{N}{2}+1,...,\frac{N}{2}-1\}\\ k_z=\frac{2\pi z_i}{L},z_i \in \{-\frac{N}{2},-\frac{N}{2}+1,...,\frac{N}{2}-1 \} kx=L2πxi,xi{2N,2N+1,...,2N1}kz=L2πzi,zi{2N,2N+1,...,2N1}
表示向量k在频域平面上以原点为中心每隔2pi/L取一个点,共取NxN个,其中L为海面面片尺寸。

对于向量x的取值,可用如下方式表示:
x = x j L N , x j ∈ { − N 2 , − N 2 + 1 , . . . , N 2 − 1 } z = z j L N , z j ∈ { − N 2 , − N 2 + 1 , . . . , N 2 − 1 } x=\frac{x_jL}{N},x_j \in \{-\frac{N}{2},-\frac{N}{2}+1,...,\frac{N}{2}-1\}\\ z=\frac{z_jL}{N},z_j \in \{-\frac{N}{2},-\frac{N}{2}+1,...,\frac{N}{2}-1\} x=NxjL,xj{2N,2N+1,...,2N1}z=NzjL,zj{2N,2N+1,...,2N1}
表示向量x在xz平面以原点为中心每隔L/N取一个点,共取NxN个。

iii.频谱的具体形式
h ~ ( k ⃗ , t ) = h ~ 0 ( k ⃗ ) e i ω ( k ) t + h ~ 0 ∗ ( − k ⃗ ) e − i ω ( k ) t \tilde{h}(\vec{k},t)=\tilde{h}_0(\vec{k})e^{i\omega (k) t}+\tilde{h}^{*}_{0}(-\vec{k})e^{-i\omega (k) t} h~(k ,t)=h~0(k )e(k)t+h~0(k )e(k)t
其中
h ~ 0 ( k ⃗ ) = 1 2 ( ξ r + i ξ i ) P h ( k ⃗ ) h ~ 0 ∗ ( k ⃗ ) = 1 2 ( ξ r − i ξ i ) P h ( k ⃗ ) P h ( k ⃗ ) = A e − 1 / ( k L 0 ) 2 k 4 ∣ k ⃗ ⋅ ω ⃗ ∣ 2 \tilde{h}_0(\vec{k})=\frac{1}{\sqrt{2}}(\xi_r+i\xi_i)\sqrt{P_h(\vec{k})}\\ \tilde{h}^{*}_{0}(\vec{k})=\frac{1}{\sqrt2}(\xi_r-i\xi_i)\sqrt{P_h(\vec{k})}\\ P_h(\vec k)=A\frac{e^{-1/{(kL_0)^2}}}{k^4}|\vec k \cdot \vec{\omega}|^2 h~0(k )=2 1(ξr+iξi)Ph(k ) h~0(k )=2 1(ξriξi)Ph(k ) Ph(k )=Ak4e1/(kL0)2k ω 2
其中两个\zeta是相互独立的随机数,均服从均值为0,标准差为1的正态分布


L 0 = v 2 g L_0=\frac{v^2}{g} L0=gv2
其中v表示风速

而风向的表示为
ω ( k ) = g k \omega(k)=\sqrt{gk} ω(k)=gk
g表示重力加速度,k表示向量k的模

2)法线方向的表示和计算

根据海面高度模型,我们可以通过计算其梯度的方向结合如图所示几何关系得到某点的法线方向

在这里插入图片描述

其中梯度方向为高度逐渐增高的方向,与切线方向相反

up为上方向(0,1,0)

为便于计算,各向量计算前需进行单位化,则法线方向向量可表示为:
T ^ = n o r m a l i z e ( T ) = n o r m a l i z e ( − ∇ h ( x ⃗ , t ) ) N ^ = n o r m a l i z e ( ( 0 , 1 , 0 ) + T ^ ) = n o r m a l i z e ( ( 0 , 1 , 0 ) − ∇ h ( x ⃗ , t ) ) \hat{T}=normalize(T)=normalize(-\nabla h(\vec{x},t))\\ \hat{N}=normalize((0,1,0)+\hat{T})\\ =normalize((0,1,0)-\nabla h(\vec{x},t)) T^=normalize(T)=normalize(h(x ,t))N^=normalize((0,1,0)+T^)=normalize((0,1,0)h(x ,t))

而梯度的具体计算为:
∇ h ( x ⃗ , t ) = ∑ k ⃗ ∇ h ~ ( k ⃗ , t ) e i k ⃗ ⋅ x ⃗ = ∑ k ⃗ h ~ ( k ⃗ , t ) ∇ e i k ⃗ ⋅ x ⃗ \nabla h(\vec x,t)=\sum_{\vec k}\nabla \tilde{h}(\vec{k},t)e^{i \vec{k} \cdot \vec x }\\ =\sum_{\vec k}\tilde{h}(\vec{k},t)\nabla e^{i\vec{k} \cdot \vec{x}} h(x ,t)=k h~(k ,t)eik x =k h~(k ,t)eik x
其中
∇ e i k ⃗ ⋅ x ⃗ = ( ∂ [ e i ( k x ⋅ x + k z ⋅ z ) ] ∂ x , ∂ [ e i ( k x ⋅ x + k z ⋅ z ] ∂ z ) = ( i k x ∗ e i ( k x ⋅ x + k z ⋅ z ) , i k z ∗ e i ( k x ⋅ x + k z ⋅ z ) ) = ( i k x ∗ e i k ⃗ ⋅ x ⃗ , i k z ∗ e i k ⃗ ⋅ x ⃗ ) \nabla e^{i \vec{k} \cdot \vec{x}}=(\frac{ \partial[e^{i(k_x \cdot x+k_z \cdot z)}]}{\partial x },\frac{\partial[e^{i(k_x \cdot x+k_z \cdot z}]}{\partial z})\\ =(ik_x * e^{i(k_x \cdot x +k_z \cdot z)},ik_z * e^{i(k_x \cdot x+k_z \cdot z)})\\ =(ik_x*e^{i \vec{k} \cdot \vec{x}},ik_z * e^{i\vec{k} \cdot \vec{x}}) eik x =(x[ei(kxx+kzz)],z[ei(kxx+kzz])=(ikxei(kxx+kzz),ikzei(kxx+kzz))=(ikxeik x ,ikzeik x )
以上推导过程均来自fft海面模拟(一)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hunnybub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值