用MATLAB生成地震反应谱

用MATLAB生成地震反应谱,第1张

地震反应谱是单自由度体系在地震作用下某个最大响蚂蚂应量与结构自振周期的关系曲线。哗顷

在Matlab中可以先计算确定阻尼比下结构离散自振周期T(0:dt:T)下的伪速度反应谱(Spv),然后根据速度谱与加速度谱的(Spa=wSpv)关系求出加速度反应谱。

具体可参照王光远院士翻译的克拉夫的修订版《闷芦埋结构动力学》。这本书很经典,学校图书馆肯定有。

问题出现V上面。

在第3行,程序明确V是一和肆个数值而已

但是第19行到第24行,程序已经把V改变成为一个矩阵,行为685,列为750

这样直接导致第39行中(V*dt/dx).^2*(pp(x+1,z)+pp(x-1,z)-2*pp(x,z))该含液项的结果也是这样一个685*750的矩阵

这样的矩阵是不能直接赋值给第39行的左边的数值p(x,z)的。唤老轿

在Matlab输入地震波可以采用matlab的文件读取功能,先把地震波保存在掘李记事本信散塌中,然后利用matlab的文件读取,比如fid=fopen('2.txt','r') dzhbo=fscanf(fid,'%f',401) 以下是一个小程序可参考滑圆: clear xs=2*0.287 fid=fopen('2.txt','r') dzhbo=fscanf(fid,'%f',401) ag=dzhbo*0.01*xs dt=0.02 ndzh=400 cn=3 m0=[2.762 2.760 2.300]*1e+3 k0=[2.485 1.921 1.522]*1e+5 l=diag(ones(cn)) m=diag(m0) [ik]=matrixju(k0,cn) [x,d]=eig(ik,m) d=diag(sqrt(d)) for i=1:cn [d1(i),j]=min(d) xgd(:,i)=x(:,j) d(j)=max(d)+1 end w=d1 x=xgd a1=2*w(1)*w(2)*(0.05*w(2)-0.07*w(1))/(w(2)^2-w(1)^2) a2=2*(0.07*w(2)-0.05*w(1))/(w(2)^2-w(1)^2) for j=1:cn x(:,j)=x(:,j)/x(cn,j) znb0(j)=(a1+a2*w(j)^2)/2/w(j) zhcan(j)=(x(:,j))'*m*l/((x(:,j))'*m*x(:,j)) [dlt(j, ,dltacceler(j, ]=zxzj(znb0(j),w(j),ag) end for i=1:cn disp1=0 accel1=0 for j=1:cn disp0=zhcan(j)*dltacceler(j,*x(i,j) accel0=zhcan(j)*dltacceler(j,*x(i,j) disp1=disp1+disp0

accel1=accel1+accel0 end disp(i, =disp1 accel(i,:)=accel1 end t=0:dt:ndzh*dt subplot(2,2,1) plot(t,disp(3,:)*1e+3,'b') subplot(2,2,2) plot(t,accel(3,:),'g') subplot(2,2,3) plot(t,dzhbo,'r')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12544862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存