|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
请问已知PSD的曲线或者方程(ISO 7096中测量座椅的输入信号),如何得到时间序列?
PSD的方程是PSD=1.93 (HP24)^2 (LP24)^2
(LP24) = 1/(1 + 2,613S + 3,414S2 + 2,613S3+ S4)
(HP24) = S4/(1 + 2,613S + 3,414S2 + 2,613S3 + S4)
S = j f / fc; j = -1
我根据帖子http://forum.vibunion.com/thread-62040-1-2.html中给出的方法尝试计算,但得出的结果不对。请大家帮忙看下哪里出错了。
clc;
clear all;
f=(0:0.001:12)'; % cut-off frequency 0-12 hz
L=length(f);
% calculate the PSD according to the equations
for i=1:L
Slp(i,1)=f(i,1)/3*(-1)^0.5;
Shp(i,1)=f(i,1)/1.5*(-1)^0.5;
HP(i,1)=Shp(i,1)^4/(1+2.613*Shp(i,1)+3.414*Shp(i,1)^2+2.613*Shp(i,1)^3+Shp(i,1)^4);
LP(i,1)=1/(1+2.613*Slp(i,1)+3.414*Slp(i,1)^2+2.613*Slp(i,1)^3+Slp(i,1)^4);
Gpf(i,1)=1.93*(HP(i,1)^2)*(LP(i,1)^2);
G(i,1)=abs(Gpf(i,1));
end
% calculate the time signal based on the PSD
L=60;
l=0.005;
N=L/l;
no=1/N;
fik=unifrnd(0,2*pi,1,N+1)';
k=0:N/2;
Xk=sqrt(G).*exp(j*fik);
Xk(1)=sqrt(G(1));
Xk(N/2+1)=sqrt(G(N/2+1));
Xk=[Xk(1:6001);conj(Xk(6000:-1:1))];
Xm=ifft(Xk);
x=linspace(0,60,length(Xm));
subplot(211);
plot(x,real(Xm));
xlabel('time/s');
ylabel('acceleration/m s^-^2');
Pxr=abs(fft(real(Xm))).^2;
Pxr=Pxr(1:N/2+1);
subplot(212);
n1=linspace(0,6,N/2+1);
plot(f,G,'r','linewidth',3); hold on;
plot(n1,Pxr);
legend('G','Pxr')
也有朋友说可以根据psd曲线设计一个相同形状的滤波器,然后让一个随机信号通过滤波器。但是设计滤波器不是很懂。
|
|