我想重复一篇文章中的例子。
我必须解决这个ODE:
25 a + 15 v + 330000 x = p(t)
其中 p(t)是一个白噪声序列,限制在10-25 Hz范围内; a 是加速度, v 是速度, x 是位移。
然后它说使用Runge-Kutta程序模拟系统。采样频率设置为1000 Hz,并将高斯白噪声添加到数据中,使噪声占信号r.m.s值的5%(如何使用此最后信息?)。
主要问题与带限白噪声有关。我按照我在https://dsp.stackexchange.com/questions/9654/how-to-generate-band-limited-gaussian-white-noise找到的说明进行操作,并编写了以下代码:
% White noise excitation
% design FIR filter to filter noise in the range [10-25] Hz
Fs = 1000; % sampling frequency
% Time infos (for white noise)
T = 1/Fs;
tspan = 0:T:4; % I saw from the plots in the paper that the simulation last 4 seconds
tstart = tspan(1);
tend = tspan (end);
b = fir1(64, [10/(Fs/2) 25/(Fs/2)]);
% generate Gaussian (normally-distributed) white noise
noise = randn(length(tspan), 1);
% apply filter to yield bandlimited noise
p = filter(b,1,noise);
现在我必须为ode定义函数,但我不知道如何给它 p (白噪声)......我试过这样:
function [y] = p(t)
b = fir1(64, [10/(Fs/2) 25/(Fs/2)]);
% generate Gaussian (normally-distributed) white noise
noise = randn(length(t), 1);
% apply filter to yield bandlimited noise
y = filter(b,1,noise);
end
odefun = @(t,u,m,k1,c,p)[u(2); 1/m*(-k1*u(1)-c*u(2)+p(t))];
[t,q,te,qe,ie] = ode45(@(t,u)odefun2(t,u,m,k2,c,@p),tspan,q0,options);
事实是输入激励不能正常工作:方程的固有频率约为14 Hz,所以我希望看到响应中的共振,因为白噪声在10-25 Hz范围内。 / p>
我也看过这个Q / A,但我还是不能让它起作用:
How solve a system of ordinary differntial equation with time-dependent parameters
Solving an ODE when the function is given as discrete values -matlab-