|
本帖最后由 wdhd 于 2016-6-3 10:10 编辑
原帖由 zhly 于 2008-4-15 16:28 发表
对程序做了两处修改:
(1)fik=unifrnd(0,2*pi,1,N); 改为fik=randn(1,N)*2*pi;
(2)Xk=[Xk(1:2049) conj(Xk(2048:-1:2))]; “songzy41修改”
功率谱密度结果如下图
麻烦论坛的高手再帮帮忙,怎么修改能使 ...
我认为两条线没有重合,其原因是这语句
Xk=sqrt((N/(2*l))*GxC(k*no)).*exp(j*fik)
中乘了((N/(2*l)),或者其中对应的GxC和下语句中的
loglog(n,Pxr,'r',n1,GxC(n1));
中的GxC数值上不完全一样,或者两者都有。我做了这样的修改(不懂楼主的设置,仅从变换的角度考虑),保证求Xk的GxC和比较的GxC是同一组数,程序如下
N=4096;
n=linspace(0.01,3,N/2+1);
k=0:N/2;
fik=unifrnd(0,2*pi,1,N); %产生0到2pi的均匀分布的随机序列
Pg=GxC(n);
Xk=sqrt(Pg(1:N/2+1)).*exp(j*fik(1:N/2+1)); %调用函数GxC(n)
Xk(1)=sqrt(Pg(1)); Xk(N/2+1)=sqrt(Pg(N/2+1));
Xk=[Xk(1:2049) conj(Xk(2048:-1:2))];
Xm=ifft(Xk); %逆傅立叶变换后得到复数形式随机序列
x=linspace(0,409.6,length(Xm));
subplot(211);
plot(x,real(Xm)); grid; %取实部
xlabel('行驶距离/m');
ylabel('路面不平度/mm');
subplot(212);
Pxr=abs(fft(real(Xm))).^2; %恢复序列的功率谱
Pxr=Pxr(1:N/2+1);
loglog(n,Pxr,'r','linewidth',3); hold on;
plot(n,Pg(k+1)); hold off; grid; %恢复序列的功率谱与原功率谱值比较
xlabel('空间频率n');
ylabel('功率谱密度Gx(n)');
得图中可看到两曲线完全重合。 |
-
|