找回密码
 注册
Simdroid-非首页
查看: 373|回复: 11

高手看看小弟的模拟风荷载时程分析程序的模拟谱与目标谱不吻合

[复制链接]
发表于 2008-11-9 15:24:36 | 显示全部楼层 |阅读模式 来自 河南郑州
clear all;
N=512;                                          %采样点数
wu=4*2*pi;                                      %截断频率                                                      
dm=wu/N;                                        %频率步长
dt=2*pi/(2*wu);                                 %时间步长
k=0.005;                                        %地面粗糙度系数
d=0.001;
f=d:d:10;
v10=30;                                         %10米高处风速为30m/s
x=1200*f/v10;
s=4*k*v10*v10.*x.^2./f./(1+x.^2).^(4/3);
z1=10;                                          %取第一点为10米高度
z2=9.5;                                         %取第二点为5米高度
r=0.12;                                         %考虑地表粗糙度影响的无量纲幂指数
v5=v10*(z2/z1)^r;                               %计算n米高处的平均风速
C=10;                                           %指数衰减系数(取经验值)            
v1=zeros(2*N,1);
v2=zeros(2*N,1);
thta1=rand(N,1);  
thta2=rand(N,1);                                %随机数
node=1;
for K=1:node
for j=1:2*N
     sum1=0;
     sum2=0;
      for l=1:N
        m1=l*dm-0.5*dm;
        m2=l*dm;
        x1=1200*m1/(2*pi*v10);
        s11=2*pi*4*k*v10*v10*x1*x1./m1./(1+x1*x1).^(4/3);
        x2=1200*m2/(2*pi*v10);
        s22=2*pi*4*k*v5*v5*x2*x2./m2./(1+x2*x2).^(4/3);
        s12=sqrt(s11*s22).*exp(-2*m2*C*abs(z1-z2)./(2*pi*(v10+v5)));
        s21=sqrt(s11*s22).*exp(-2*m1*C*abs(z1-z2)./(2*pi*(v10+v5)));
        S=[s11 s12;s21 s22];
        H=chol(S);
        a1=abs(H(1,1));
        H1=H';
        a21=abs(H1(2,1));
        a22=abs(H1(2,2));
        b1=cos((m1*dt*(j-1))+2*pi*thta1(l,1));
        b2=cos((m2*dt*(j-1))+2*pi*thta2(l,1));
        c1=a1*b1;
        c21=a21*b1;
        c22=a22*b2;
        d1=(dm).^0.5*c1;
        d2=(dm).^0.5*(c21+c22);
        sum1=sum1+d1;
        sum2=sum2+d2;
      end
     sum1=2*sum1;
     sum2=2*sum2;
     v1(j,K)=sum1;  
     v2(j,K)=sum2;
  end
end
t=(0:2*N-1)*dt;
subplot(2,2,1);
plot(t,v1,'b-');
xlabel('t(s)');
ylabel('v(t)');
hold on
plot(t,v2,'r-');
xlabel('t(s)');
ylabel('v(t)');
axis([-1 120 -60 60]);

Y=fft(v1);                            %对数值解作傅立叶变换
Y(1)=[];                              %去掉零频量
m=length(Y)/2;                        %计算频率个数;
power=abs(Y(1:m)).^2/(length(Y).^2);  %计算功率谱
freq=8*(1:m)/length(Y);     %计算频率,因为时间步长为0.125,而不是1,故乘以8
subplot(2,2,2);
loglog(freq,power,'r-',f,s,'g-');     %比较
axis([-50 15 -10 1000]);
set(gca,'xtick',[0.1 1 10]);          %自动定义刻度
set(gca,'ytick',[0.1 1 10]);
xlabel('freq');
ylabel('P');
发表于 2010-7-23 12:27:43 | 显示全部楼层 来自 天津
Simdroid开发平台
很受启发,谢谢分享,希望能讨论一下

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-9-14 21:55:54 | 显示全部楼层 来自 湖北武汉
楼主强大。。。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-9-16 13:56:35 | 显示全部楼层 来自 湖北武汉
你的功率谱计算是为什么是除以(length(Y).^2)?matlab中的periodogram 指令貌似只是除以length(Y)。D:\Snap1.bmp
回复 不支持

使用道具 举报

发表于 2011-4-2 20:04:28 | 显示全部楼层 来自 清华大学
把length(Y)的平方号去掉就行了
回复 不支持

使用道具 举报

发表于 2011-4-3 16:04:35 | 显示全部楼层 来自 清华大学
同时功率谱需要做归一化处理
回复 不支持

使用道具 举报

发表于 2011-4-3 16:03:38 | 显示全部楼层 来自 清华大学
同时需要对PW作归一化处理
回复 不支持

使用道具 举报

发表于 2011-4-7 20:13:00 | 显示全部楼层 来自 安徽合肥
受教了,楼主强人!!
回复 不支持

使用道具 举报

发表于 2012-3-17 16:29:30 | 显示全部楼层 来自 辽宁沈阳
我也学习一下
回复 不支持

使用道具 举报

发表于 2012-4-24 20:52:31 | 显示全部楼层 来自 内蒙古包头
请问一下,您上面的程序中,频率增量为什么选取0.001,有什么依据吗?
回复 不支持

使用道具 举报

发表于 2012-4-24 21:15:11 | 显示全部楼层 来自 内蒙古包头
是呢,这个应该对功率谱做归一化
回复 不支持

使用道具 举报

发表于 2012-4-24 21:27:31 | 显示全部楼层 来自 内蒙古包头
请问一下,程序中的截断频率是如何选取的?
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-1 21:24 , Processed in 0.045794 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表