马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 牛小贱 于 2014-3-18 18:13 编辑
各位好,小弟最近在做关于将路面功率谱转换为时域信号,然后进行傅里叶变换,将得到的功率谱与原功率谱作对比,从而验证该模拟方法的正确性。但是二者并不是重合,而是有一个平移量,想问问大家怎么解决?下面是我的程序。谢谢各位指点
- % 参考《频域采样三角级数法模拟轨道不平顺信号》,以公路C级路面为例
- Gq0=256e-6;
- n0=0.1; % 参考空间频率n0
- f_min=0.3;
- f_max=30;
- T=10;
- delta_f=1/T;
- N=floor((f_max-f_min)/delta_f); % 采样点数
- delta_t=T/N;
- time=linspace(0,T,N);
- V=20;
- sita=unifrnd(0,2*pi,1,N); % 产生[0,2*pi]内随机数
- f=zeros(size(sita));
- w=zeros(size(sita));
- Gq=zeros(size(sita));
- Q=zeros(size(sita));
- Z=zeros(size(sita));
- for k=1:N
- f(k)=f_min+(k-1)*delta_f; % 频率
- w(k)=2*pi/T*(k-1); % 角频率,w=2*pi*f
- Gq(k)=Gq0.*(f(k)./n0).^(-2)*V; % Gq(f)=Gq0.*(f/n0).^(-w)*V.^(w-1),其中w=2;
- end
- for l=1:length(time)
- for k=1:N
- Gq(k)=Gq0.*(f(k)./n0).^(-2)*V;
- Q(k)=2*sqrt(Gq(k)*delta_f)*cos(w(k)*time(l)+sita(k));
- end
- Z(l)=sum(Q);
- end
- figure(1)
- subplot(211);
- plot(time,Z,'r'); % 时域信号
- xlabel('时间t');ylabel('路面不平度Z');grid on;
- subplot(212);
- loglog(f,Gq,'r'); % 功率谱函数
- xlabel('频率 Hz');ylabel('功率谱密度 PSD');hold on;grid on;
- y=(abs(fft(Z))).^2/N; %时域信号FFT变换得到的功率谱函数
- loglog(f,y,'b');
复制代码
|