matlab程序出错,求帮助
目的是要求自然风压时程,用谐波叠加法,Davenport谱clear,clct0=clock;N=1024;%采样点数wu=5*2*pi;%截断频率dm=wu/N;%频率...
目的是要求自然风压时程,用谐波叠加法,Davenport谱
clear,clc
t0=clock;
N=1024; %采样点数
wu=5*2*pi; %截断频率
dm=wu/N; %频率步长
dt=2*pi/(2*wu); %时间步长
k=0.003; %地面粗糙度
d=0.01;
f=d:d:10;
v10=45; %10m高处平均风速
x=1200*f/v10;
s=4*k*v10*v10.*x.^2/f./(1+x).^2.^(4/3); %Davenport谱
z1=4; %取第一点为4m
z2=2; %取第二点为2m
r=0.12; %考虑地面粗糙度的无量纲幂指数
v4=v10*(z1/10)^r; %计算n米高处平均风速
v2=v10*(z2/10)^r;
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.*v4.*v4.*x1*x1./m1./(1+x1*x1).^(4/3);
x2=1200*m2/(2*pi*v10);
s22=2*pi*4*k.*v2.*v2.*x2*x2./m2./(1+x2*x2).^(4/3);
s12=sqrt(s11*s22).*exp(-2*m2*c*abs(z1-z2)./(2*pi*(v4+v2)));
s21=sqrt(s11*s22).*exp(-2*m1*c*abs(z1-z2)./(2*pi*(v4+v2)));
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(1,1));
b2=cos((m2*dt*(j-1))+2*pi*thta2(1,1));
c1=a1*b1;
c21=a21*b1;
c22=a22*b2;
d1=(dm).^0.2*c1;
d2=(dm).^0.2*(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
time=etime(clock,t0);
%A、B两点风速时程对比
t=(0:2*N-1)*dt;
subplot(2,1,1);
plot(t,v1,'b-');
xlabel('t(s)');
ylabel('v(t)');
hold on
plot(t,v2,'r-');
xlabel('t(s)');
ylabel('v(t)');
axis([0 1000 -50 50]); 展开
clear,clc
t0=clock;
N=1024; %采样点数
wu=5*2*pi; %截断频率
dm=wu/N; %频率步长
dt=2*pi/(2*wu); %时间步长
k=0.003; %地面粗糙度
d=0.01;
f=d:d:10;
v10=45; %10m高处平均风速
x=1200*f/v10;
s=4*k*v10*v10.*x.^2/f./(1+x).^2.^(4/3); %Davenport谱
z1=4; %取第一点为4m
z2=2; %取第二点为2m
r=0.12; %考虑地面粗糙度的无量纲幂指数
v4=v10*(z1/10)^r; %计算n米高处平均风速
v2=v10*(z2/10)^r;
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.*v4.*v4.*x1*x1./m1./(1+x1*x1).^(4/3);
x2=1200*m2/(2*pi*v10);
s22=2*pi*4*k.*v2.*v2.*x2*x2./m2./(1+x2*x2).^(4/3);
s12=sqrt(s11*s22).*exp(-2*m2*c*abs(z1-z2)./(2*pi*(v4+v2)));
s21=sqrt(s11*s22).*exp(-2*m1*c*abs(z1-z2)./(2*pi*(v4+v2)));
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(1,1));
b2=cos((m2*dt*(j-1))+2*pi*thta2(1,1));
c1=a1*b1;
c21=a21*b1;
c22=a22*b2;
d1=(dm).^0.2*c1;
d2=(dm).^0.2*(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
time=etime(clock,t0);
%A、B两点风速时程对比
t=(0:2*N-1)*dt;
subplot(2,1,1);
plot(t,v1,'b-');
xlabel('t(s)');
ylabel('v(t)');
hold on
plot(t,v2,'r-');
xlabel('t(s)');
ylabel('v(t)');
axis([0 1000 -50 50]); 展开
1个回答
展开全部
s11与另外三个类型不同
所以数组s=[s11 s12;s21 s22];错误
应该是这里有问题:
v4=v10*(z1/10)^r; %计算n米高处平均风速
v2=v10*(z2/10)^r;
c=10; %指数衰减系数(取平均值)
v1=zeros(2*N,1);
v2=zeros(2*N,1);
改为
v4=v10*(z1/10)^r; %计算n米高处平均风速
v3=v10*(z2/10)^r;
c=10; %指数衰减系数(取平均值)
v1=zeros(2*N,1);
v2=zeros(2*N,1);
......
s22=2*pi*4*k.*v3.*v3.*x2*x2./m2./(1+x2*x2).^(4/3);
就可以了
结果是
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询