从非线性动力系统生成的时间序列的 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。
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
假设有一个 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。