微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

非线性动力学系统产生的时间序列的FFT

如何解决非线性动力学系统产生的时间序列的FFT

       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和比例尺图像

解决方法

假设有一个连续时间动力系统,其微分方程的控制系统以合适的单位制(例如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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。