声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1554|回复: 0

[编程技巧] 请问已知PSD的曲线或者方程如何得到时间序列

[复制链接]
发表于 2013-8-7 21:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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曲线设计一个相同形状的滤波器,然后让一个随机信号通过滤波器。但是设计滤波器不是很懂。
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-24 00:14 , Processed in 0.063567 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表