如何解决非线性动力学系统产生的时间序列的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 举报,一经查实,本站将立刻删除。