从非线性动力系统生成的时间序列的 FFT

FFT of time series generated from a nonlinear dynamical system

       close all;clc;
        global  a b c
         a=0.2;
         b=0.4;
         c=5.7;
     ts=0:.01:4000;
     z0=[1 0 1]; 
     opt=odeset('RelTol',10e-12);
     [t,z]= ode45('System', ts, z0,opt);
     Fs = 1000;   
     x=z(:,1);
     nfft = 2^nextpow2(length(x));
     Pxx = abs(fft(x,nfft)).^2/length(x)/Fs;
     Hpsd = dspdata.psd(Pxx(1:length(Pxx)/2),'Fs',Fs/10); 
     figure()
     plot(Hpsd)

    function zdot=System(t,z) 
      global a b c
   zdot=[ -(z(2)+z(3));
           z(1)+a*z(2);
           b+z(1)*z(3)-c*z(3)];

以上代码为Rossler nonlinear (chaotic) dynamical system的代码。积分时间步长为 0.01,这是 ode45 求解器的一个参数。我正在尝试绘制 fft 和尺度图(小波变换)。但我不知道如何为这些类型的系统设置采样和奈奎斯特频率。我只是假设采样频率为 Fs = 1000.....它也可以是 100。这是我不确定的。

谁能帮忙解释一下

(1) 这些类型的动力系统的采样频率和奈奎斯特频率是多少

(2)z

的小波变换如何得到fft和尺度图

假设有一个 continuous-time 动力系统,其微分方程的控制系统以适当的单位系统(例如 SI 系统)表示,产生一个输出作为其解,为简单起见,假设为 y(t),然后通过适当采样将此 continuous-time 函数 y(t) 转换为 discrete-time 序列 y[n]。

最典型的采样方式是均匀采样:y[n] = y(tn) = y(n*Ts)。

其中 Ts 是以秒为单位的采样周期。这意味着 discrete-time 序列的样本值 y[n] 是通过计算 time-stamps 处的 continuous-time 函数 y(t) 获得的: tn = n*Ts .

使用这种采样方法,采样频率为 Fs = 1/Ts(以赫兹为单位),相关的奈奎斯特频率 Fn = Fs/2.

在您的代码中,ODE45 实现了一个数值过程来求解所提供的微分方程组,在向量指示的 time-stemps 处进行评估:ts=0:.01:4000; 从 0 到 4000 秒(假设秒作为时间单位)

这个time-vectorts表示continuous-time解y(t)的采样,step-size的这个向量就是上面定义的采样周期 Ts。

因此,在您的具体示例中,采样周期为 0.01 秒,采样频率为 100 Hz,奈奎斯特频率为 50 Hz。