700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > matlab对频谱傅里叶逆变换 基于功率谱的傅里叶逆变换问题

matlab对频谱傅里叶逆变换 基于功率谱的傅里叶逆变换问题

时间:2020-03-06 06:05:57

相关推荐

matlab对频谱傅里叶逆变换 基于功率谱的傅里叶逆变换问题

各位大神好,

我最近在做路面不平度。就是用傅里叶逆变换的方法利用该方法将公路路面功率谱密度进行合理的离散化得到功率谱密度的数据,然后对这些数据进行计算得到路面不平度的离散傅立叶变换,对离散傅立叶变换的数据按照一定规则补齐后再进行傅立叶逆变换,便得到路面不平度数据,其功率谱密度与所给定的应该是准确一致。但是我逆变换出来的功率谱与原来的功率谱之间总是差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 上传

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。