skyismine 发表于 2008-12-15 11:22

功率谱离散采样模拟时域信号

将功率谱离散化,并在离散点上建立对应的频谱值,然后通过FFT逆变换即得% 频域离散点采样
%nextpow2() 取最接近的较大2次幂
clear;
clc;
Av=;
Aa=;
Ws=;
Wc=;
k=0.25;
rand('state',0);
%yl=1.524;yu=304.8;
yl=0.5;yu=50;
pr1={'V='};
in1=inputdlg(pr1,'线路参数模拟信息',1,{'100'});
V=str2num(in1{1});
pr2={'选择路面等级i=','输入不平顺种类(1-高低不平顺,2-方向不平顺,3-水平及轨距不平顺j='};
in2=inputdlg(pr2,'线路参数模拟信息',1,{'6','1'});
i=str2num(in2{1});
j=str2num(in2{2});
v=V/3.6;
switch j
case 1
s=@(f)(k*Av(i)*Wc(i)^2./((f.*2*pi/v).^2.*((f*2*pi/v).^2+Wc(i)^2)))/v;%%s=k*Av(i)*Wc(i)^2/(w^2*(w^2+Wc(i)^2));
case 2
s=@(f)(k*Aa(i)*Wc(i)^2./((f*2*pi/v).^2.*((f*2*pi/v).^2+Wc(i)^2)))/v;
case 3
s=@(f)(4*k*Av(i)*Wc(i)^2./((f*2*pi/v).^2+Ws(i)^2)./((f*2*pi/v).^2+Wc(i)^2))/v;
end
fu=v/yl;fl=v/yu;
co=1;%判断点的个数和Nr/2的关系
while(co>0)
Ts=inputdlg('模拟时间Ts=','模拟的时间长度',1,{'10'});
Ts=str2num(Ts{1});
dt=0.0001;
N=Ts/dt;
Nr=2^(nextpow2(N));
Xm=zeros(1,Nr/2+1);
df=1/(Nr*dt);
n0=ceil(fl/df);
nf=ceil(fu/df);
if nf<=Nr/2
S=feval(s,(n0+1:nf)*df);
Xm(n0+1:nf)=Nr*sqrt(S*df);
break;
% N0+1~N0+Nf数值非零,其余为零。
end
end
n=nf-n0;
q=2*pi*rand(1,Nr/2+1);
X=Xm.*q;
temp=fliplr(X);
X=;
x=ifft(X,Nr);
t=(1:Nr)*dt;
%%-->频域法模拟结果
figure(1);
subplot(2,1,1);
plot(t,x);
grid on;
Fs=1/dt;
fn=(1:Nr/2)/Nr*Fs;
Xnn=fft(x,Nr);
Xn=Xnn(1:Nr/2);
Sn=(abs(Xn)*2/Nr).^2;
figure(1);
subplot(2,1,2);
loglog(fn,Sn,'* g',fn,s(fn),'r');
legend('模拟值','解析值');
xlim();
ylim();时域信号。

skyismine 发表于 2008-12-15 13:06

抱歉,新手初次发帖,光顾着发帖,忘记说问题了。
我的问题在于,模拟出的时域数据在开始和结尾部分,数值很大,这个数据不合理,不知道问题出在哪。苦思,未果。故浮上水面,发帖求教高手检查下,多谢。

skyismine 发表于 2008-12-19 12:01

自己帮自己顶一下,这几天在做其他的东西,这个问题高手们有好的建议吗?十分期待啊。

songzy41 发表于 2008-12-27 16:02

最后得到的时间序列x是由X转换过来的,即频率维是X,所以如果时间序列x不对的话,应检查一下X是否正确。

skyismine 发表于 2009-1-8 10:04

这个问题中,频谱X(k),是由功率谱密度函数离散采样得到的,不会有错。我之前分析过,觉得应该是稳定性问题,在开始和结尾处发散,但是中间的数据拟合的很好。不知道是不是信号泄漏之类的专业问题。因为我不是学信号处理的,求高手帮解答,谢

songzy41 发表于 2009-1-8 11:49

原帖由 skyismine 于 2009-1-8 10:04 发表 http://www.chinavib.com/forum/images/common/back.gif
这个问题中,频谱X(k),是由功率谱密度函数离散采样得到的,不会有错。我之前分析过,觉得应该是稳定性问题,在开始和结尾处发散,但是中间的数据拟合的很好。不知道是不是信号泄漏之类的专业问题。因为我不是学信 ...
功率谱是一个实偶函数,不包含信号的相位信息,所以无法恢复出信号。

skyismine 发表于 2009-1-10 15:11

谢谢“songzy41”大侠的热情而又及时的回复,我在附件贴出了频域法的原理介绍,是在一篇论文中摘下来的,请过目。我的程序是严格按照这个思路编写的,就是得不出那么好的拟合效果,甚为苦恼。
另外,“songzy41”兄提到的相位问题,频域法是通过构造一个单位复指数来实现的。具体请参考附件。感谢。

wangyuewu 发表于 2009-4-8 16:29

对楼主的帖子很感兴趣,您说的功率谱 是 指的功率谱密度吗?

superhe 发表于 2009-10-14 14:59

楼主是否是按此文来实现的,附件里

superhe 发表于 2009-10-14 15:07

呵呵,附件太大了,没传上来,就是铁路轨道不平顺随机过程的数值模拟 陈果一文?

diying813 发表于 2014-12-23 11:16

songzy41 发表于 2009-1-8 11:49
功率谱是一个实偶函数,不包含信号的相位信息,所以无法恢复出信号。

您好想请教下,是不是已知信号的功率谱密度函数,不可以反求出信号的时域模型?比如分级路面谱,路面的垂直速度功率谱是常数,所以是白噪声,可以模拟出路面的垂直速度输入。但是路面的垂直加速度功率谱与频率有关,是不是就无法模拟出路面的垂直加速度输入了?
页: [1]
查看完整版本: 功率谱离散采样模拟时域信号