各位大神好,
我最近在做路面不平度。就是用傅里叶逆变换的方法利用该方法将公路路面功率谱密度进行合理的离散化得到功率谱密度的数据,然后对这些数据进行计算得到路面不平度的离散傅立叶变换,对离散傅立叶变换的数据按照一定规则补齐后再进行傅立叶逆变换,便得到路面不平度数据,其功率谱密度与所给定的应该是准确一致。但是我逆变换出来的功率谱与原来的功率谱之间总是差5倍,求解答??
程序如下:
clear
clc
v=10;
fmin=0.5;
fmax=30;
nmin=0.01; %fmin/v;
nmax=3; %fmax/v;
Gd0=16;
fs=10; %采样频率fs(frequency of sampling>2fmax
deltt=1/fs;%采样时间间隔
N=2^12; %采样点数
deltl=0.1; %v*deltt; %采样距离间隔
L=deltl*N; %采样距离
deltf=1/L; %采样空间频率间隔
%deltf=1/deltt/N; %采样时间频率间隔
Neff=(nmax-nmin)/deltf; %有效频段内的采样点数
N0=nmin/deltf; %需要满足条件(N0+Neff
k=0;
while(k*deltf
k=k+1; %判断下截止频率所在位置
end
l=0;
while(l*deltf
l=l+1; %判断上截止频率所在位置
end
Gd=[];
x=[];
for ii=1:k
Gd(ii)=0;
x(ii)=0;
end
for ii=k+1:1:l+1
Gd(ii)=Gd0*((ii-1)*deltf/0.1)^(-2);
x(ii)=sqrt(N*Gd(ii)/2/deltl);
%x(ii)=N*sqrt(Gd(ii)*deltf);
end
for ii=l+2:1:N/2
Gd(ii)=0;
x(ii)=0;
end
Gd(N/2+1)=0;
x(N/2+1)=0;
a=[];
xc=zeros(1,N);
for j=1:N/2
a(j)=2*pi*rand();
b(j)=cos(a(j))+i*sin(a(j));
xc(j)=b(j).*x(j);
end
xc(N/2+2:N)=fliplr(conj(xc(2:N/2))); %共轭对称
xifft=ifft(xc);
for j=1:N
t(j)=(j-1)*deltl;
end
xaver=mean(xifft)
xsd=std(xifft)
xmax=max(xifft)
subplot(2,1,1)
plot(t,xifft)
xlabel('沿道路走向长度(m)');
ylabel('路面不平度(mm)');
fx=[];
for i=1:N/2+1
fx(i)=(i-1)*deltf;
end
[power,fre]=psd(xifft,N,fs,boxcar(length(xifft)),0,0.97);
power(1:k)=0;
power(l+1:N/2)=0;
subplot(2,1,2);
loglog(fre,power,'r',fx,Gd(1:N/2+1),'b')
axis([10^(-2) 10 10^(-2) 10^6])
xlabel('空间频率n/m-1');
ylabel('功率谱密度Gd(n)*10^(-6)m2/(m-1)')
grid on
以上是程序,变换完后,我用power/Gd二者之间总是错5倍。
计算结果:
-8-12 14:39 上传