- 积分
- 0
- 注册时间
- 2008-5-22
- 仿真币
-
- 最后登录
- 1970-1-1
|
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'); |
|