我正在使用 $N=256$ 网格点求解离散 ODE 系统,$L = 256$ 是域的长度。空间网格是等距的
-L/2:1:L/2-1
使用 Matlab 的 ode23
求解器,得到的解向量 u
是一个 2177 x 256
矩阵,根据文档,其中 u
中的每一行对应于列向量中的一个时间t
。也就是说,u
有 $256$ 个组件,每行只是一个时间片。
我想计算功率谱密度 $|\hat{u}(t)|^2$ 将其与从 $-\pi$ 到 $\pi$ 的离散波数 $\kappa$ 进行绘制。
根据
fft(X,n)
文档,
如果 X 是矩阵,则每一列都被视为向量情况。 如果 X 是向量,则 fft(X) 返回向量的傅立叶变换 矢量。
令我困惑的是,我的解决方案向量中有多个组件,这些组件与我读过的示例不同。要根据需要使用
fft
命令,我:
n = length(t) = 2177
并使用uhat=fft(u,n)
? PSD 将是 PSD = uhat.*conj(uhat)/n
,我们除以 n
进行标准化。或者我会使用fft(u',n)
?关于你的第一个问题,你应该从行中取出
fft
,n
只是fft
输出的大小,决定你的输出频率分辨率,这意味着如果你放n=2048
,之间的频率距离输出 fft
结果是 Fs/2048
,其中 Fs
是采样频率。所以总的来说,您应该这样做 fft(u', n)
,其中 n 不需要等于您的样本量。
对于第二个问题,您的输出结果频率在
[-Fs/2:Fs/n:Fs/2)
范围内,除以 Fs
并乘以 2pi
将得到 kappa
轴,[-pi:2pi/n:pi]