Raspberry 发表于 2016-3-9 13:53

通过功率谱密度函数还原出时域函数(公路谱)

频域法的核心是快速傅立叶变换,即功率谱密度函数在离散的采样点上与信号的频谱有着一个确定的关系。如果能够在功率谱密度函数上离散采样,构造出频谱 ,然后再对其进行傅立叶逆变换,即可得到时域的函数曲线。
下面以公路谱为例的matlab处理程序:
Gx0=256;                  %参考空间频率n0下的路面功率谱密度
n0=0.1;                   %参考空间频率n0
L=409.6;
l=0.1;
N=L/l;                     %采样点数
n1=0.01;                   %空间频率范围n1--nu
nu=3;
w=2;                     %频率指数
no=1/L;                  %空间频率间隔
Xk=[];
Xm=[];
n=linspace(0.01,3,N/2+1);
GxC=Gx0*(n/n0).^(-w);
k=0:N/2;
fik=randn(1,N)*2*pi;             %产生0到2pi的均匀分布的随机序列
pg=GxC(1:N/2+1);
Xk=sqrt((N/2+1)/(2*l)*pg).*exp(j*fik(1:N/2+1));%调用函数GxC(n)
Xk(1)=sqrt((N/2+1)/(2*l)*pg(1)); Xk(N/2+1)=sqrt((N/2+1)/(2*l)*pg(N/2+1));
Xk=;
Xm=ifft(Xk);            %逆傅立叶变换后得到复数形式随机序列
x=linspace(0,409.6,length(Xm));
subplot(211);
plot(x,real(Xm));                              %取实部
xlabel('行驶距离/m');
ylabel('路面不平度/mm');
Pxr=abs(fft(real(Xm))).^2/N;                     %恢复序列的功率谱
Pxr=Pxr(1:N/2+1);
subplot(212);
n=linspace(0.01,3,N/2+1);
loglog(n,GxC(1:N/2+1),'r'); hold on;
loglog(n,Pxr);                  %恢复序列的功率谱与原功率谱值比较
xlabel('空间频率n');
ylabel('功率谱密度Gx(n)'); hold off;
legend('GxC','Pxr')

转自:http://blog.sciencenet.cn/blog-357150-279391.html
页: [1]
查看完整版本: 通过功率谱密度函数还原出时域函数(公路谱)