【问题标题】:FFT of time series generated from a nonlinear dynamical system从非线性动力系统生成的时间序列的 FFT
【发布时间】:2020-11-03 16:13:14
【问题描述】:
       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和尺度图图像

【问题讨论】:

    标签: matlab signal-processing fft ode wavelet


    【解决方案1】:

    假设有一个连续时间动态系统,其微分方程的控制系统以适当的单位系统(例如 SI 系统)表示,产生一个输出作为其解,为简单起见说 y(t),然后您将其转换为通过适当的采样将连续时间函数 y(t) 转换为离散时间序列 y[n]。

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

    其中 Ts 是以秒为单位的采样周期。这意味着离散时间序列的样本值 y[n] 是通过在 tn = n*Ts 给出的时间戳下评估连续时间函数 y(t) 获得的。

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

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

    这个时间向量ts表示对连续时间解y(t)的采样,这个向量的步长就是上面定义的采样周期TS。

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

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 2014-05-23
      相关资源
      最近更新 更多