地震工程作业哈工大 MATLAB程序

合集下载

Matlab在地震数据处理与分析中的应用指南

Matlab在地震数据处理与分析中的应用指南

Matlab在地震数据处理与分析中的应用指南地震是一种自然灾害,对人们的生命和财产安全造成了巨大威胁。

了解地震的发生和传播规律,对于地震风险评估、灾害预警和防御措施的制定都具有重要意义。

然而,地震数据的处理和分析是一项复杂而繁琐的工作。

在这个过程中,Matlab作为一种功能强大、易于使用的数学建模软件,可以帮助地震学家和研究人员高效地进行地震数据的处理和分析。

本文将介绍Matlab在地震数据处理与分析中的应用指南,以帮助读者更好地运用Matlab进行相关工作。

一、地震数据的读取与可视化处理地震数据通常以数值形式存储在地震波形文件中,这些文件的格式各不相同。

Matlab提供了丰富的函数库,可以读取多种地震数据文件格式,并将其转换为方便处理的矩阵数据。

以SAC文件为例,可以使用sacread函数读取SAC文件,并将其转换为Matlab中的矩阵数据。

读取地震数据后,我们可以使用Matlab强大的图形绘制功能,对地震波形进行可视化处理,更直观地了解地震数据的特征。

Matlab的plot函数可以绘制地震波形的时间序列曲线,利用subplot函数可以将多个波形图像进行排列,方便对比不同地震事件。

二、地震波形的滤波与去噪处理地震数据中通常包含大量的噪声干扰,这些噪声对于地震数据的分析和解释会产生不利影响。

Matlab提供了一系列信号滤波函数,可以有效地去除地震数据中的噪声。

常用的滤波方法包括低通滤波、高通滤波和带通滤波等。

我们可以根据地震波形的频率特征选择适当的滤波方法,并利用Matlab的filter函数进行滤波处理。

此外,Matlab还提供了多种经典的去噪算法,如小波变换去噪、小波阈值去噪等,这些方法可以更精确地去除地震波形中的噪声成分。

三、地震数据的频率域分析地震波形的频率域分析是对地震数据进行深入研究和理解的重要手段。

Matlab 提供了丰富的频率域分析函数,可以计算地震波形的功率谱密度、相位谱、互相关等频域特征。

matlab地震反应谱

matlab地震反应谱

matlab地震反应谱摘要:I.引言- 介绍Matlab 在地震工程领域的应用- 介绍本文的主要内容II.地震反应谱的计算方法- 加载地震波数据- 预处理地震波数据- 计算地震波数据的频谱- 计算地震反应谱III.地震反应谱的分析方法- 评估结构的地震响应特性- 为地震工程设计提供依据IV.结论- 总结Matlab 在地震反应谱计算中的应用- 展望未来可能的研究方向正文:Matlab 是一种功能强大的数学软件,可以用于解决各种工程和科学问题。

在地震工程领域,Matlab 可以用于计算地震反应谱,从而评估结构的地震响应。

本文将介绍如何使用Matlab 计算地震反应谱,以及如何根据反应谱分析结构的地震响应。

首先,我们需要加载地震波数据。

可以使用Matlab 内置的函数fiducial() 从文件中读取地震波数据,也可以使用自定义函数从其他来源获取数据。

接下来,我们需要对地震波数据进行预处理,以去除噪声和异常值。

可以使用Matlab 内置的函数removeoutliers() 对数据进行去噪处理。

然后,我们可以使用Matlab 内置的函数freqz() 计算地震波数据的频谱。

通过频谱,我们可以了解地震波的频率分量以及振幅。

最后,我们可以使用Matlab 内置的函数responsespectrum() 计算地震反应谱。

该函数可以根据结构的阻尼比和自振周期计算反应谱。

通过反应谱,我们可以了解结构在不同地震波作用下的加速度响应。

综上所述,Matlab 可以用于计算地震反应谱,从而评估结构的地震响应。

matlab计算单自由度的地震反应的程序

matlab计算单自由度的地震反应的程序

采用EL-CENTRO地震波计算单自由体系的振动位移反应谱前言:本课程论文采用软件是MATLAB R2010a,所编程序应用的方法是线性加速度法。

程序采用的是两层循环上实现位移谱的求取。

内循环实现在地震波下由上一步所得到的位移、速度和加速度得到下一时间间隔后的位移速度和加速度;外循环实现在不同结构自振周期(频率)下遭遇地震波的响应。

本文在求出相对位移反应谱的同时,也求出了相对速度反应谱、绝对加速度反应谱。

一.线性加速度法的简述:线性加速度法是直接数值积分法求解地震反应的方法之一,本文所采用的线性加速度法参考大崎顺彦的《地震动的谱分析入门》第二版。

具体计算公式详见大崎顺彦的《地震动的谱分析入门》第二版P116-P118。

二.所编程序及编译:clear% ***********读入地震记录***********fid = fopen('ei.txt');[Accelerate,count] = fscanf(fid,'%g'); %count 读入的记录的量time=0:0.02:(count-1)*0.02;% ***********线性加速度法计算各反应***********%初始化各储存向量Displace=zeros(1,count); %相对位移Velocity=zeros(1,count); %相对速度AbsAcce=zeros(1,count);%绝对加速度Damp=0.05; %结构阻尼比取为0.05Tc=0.0:0.05:10; %结构自振周期Dt=0.02; %地震记录的步长%记录计算得到的反应,MDis为最大相对位移,MVel为最大相对速度%MAcc某阻尼时最大绝对加速度,用于画图MDis=zeros(1,length(Tc));MVel=zeros(1,length(Tc));MAcc=zeros(1,length(Tc));t=1; %在下一个循环中控制不同的结构自振周期for T=0.0:0.05:10Frcy=2*pi/T ; %结构自振频率DamFrcy=Frcy*sqrt(1-Damp*Damp);%计算公式化简e_t=exp(-Damp*Frcy*Dt);s=sin(DamFrcy*Dt);c=cos(DamFrcy*Dt);A=zeros(2,2);A(1,1)=e_t*(s*Damp/sqrt(1-Damp*Damp)+c);A(1,2)=e_t*s/DamFrcy;A(2,1)=-Frcy*e_t*s/sqrt(1-Damp*Damp);A(2,2)=e_t*(-s*Damp/sqrt(1-Damp*Damp)+c);d_f=(2*Damp^2-1)/(Frcy^2*Dt); %计算公式化简d_3t=Damp/(Frcy^3*Dt);B=zeros(2,2);B(1,1)=e_t*((d_f+Damp/Frcy)*s/DamFrcy+(2*d_3t+1/Frcy^2)*c)-2*d_3t;B(1,2)=-e_t*(d_f*s/DamFrcy+2*d_3t*c)-1/Frcy^2+2*d_3t;B(2,1)=-e_t*(((Damp/(Frcy*Dt)+1)*s/DamFrcy)+(1/(Frcy^2*Dt))*c)+1/(Frcy^2*Dt);B(2,2)=e_t*((Damp/(Frcy*Dt)*s/DamFrcy)+(1/(Frcy^2*Dt))*c)-1/(Frcy^2*Dt);for i=1:(count-1) %根据地震记录,计算不同的反应Displace(i+1)=A(1,1)*Displace(i)+A(1,2)*Velocity(i)+B(1,1)*Accelerate(i)+B(1,2)*Accelerate(i +1);Velocity(i+1)=A(2,1)*Displace(i)+A(2,2)*Velocity(i)+B(2,1)*Accelerate(i)+B(2,2)*Accelerate(i+ 1);AbsAcce(i+1)=-2*Damp*Frcy*Velocity(i+1)-Frcy^2*Displace(i+1);endMDis(1,t)=max(abs(Displace));MVel(1,t)=max(abs(Velocity));if T==0.0MAcc(1,t)=max(abs(Accelerate)); %当结构的自振周期为0时,其绝对加速度应等于地面加速度elseMAcc(1,t)=max(abs(AbsAcce));endDisplace=zeros(1,count);%初始化各储存向量避免下次计算时引用到前面结果Velocity=zeros(1,count);AbsAcce=zeros(1,count);t=t+1; %t=length(Tc),即所求结构自振周期有多少个,对应就运行多少次。

地震工程学-反应谱和地震时程波的相互转化matlab编程#(精选.)

地震工程学-反应谱和地震时程波的相互转化matlab编程#(精选.)

地震工程学作业课程名称:地震工程学______ 指导老师:_______翟永梅_________ 姓名:史先飞________ 学号:1232627________一、地震波生成反应谱1 所取的地震波为Elcentro地震波加速度曲线,如图1所示。

图1 Elcentro地震波加速度曲线2 所调用的Matlab程序为:% ***********读入地震记录***********ElCentro;Accelerate= ElCentro(:,1)*9.8067;%单位统一为m和sN=length(Accelerate);%N 读入的记录的量time=0:0.005:(N-1)*0.005; %单位 s%初始化各储存向量Displace=zeros(1,N); %相对位移Velocity=zeros(1,N); %相对速度AbsAcce=zeros(1,N); %绝对加速度% ***********A,B矩阵***********Damp=0.02; %阻尼比0.02TA=0.0:0.05:6; %TA=0.000001:0.02:6; %结构周期Dt=0.005; %地震记录的步长%记录计算得到的反应,MaxD为某阻尼时最大相对位移,MaxV为某阻尼最大相对速度,MaxA某阻尼时最大绝对加速度,用于画图MaxD=zeros(3,length(TA));MaxV=zeros(3,length(TA));MaxA=zeros(3,length(TA));t=1;for T=0.0:0.05:6NatualFrequency=2*pi/T ; %结构自振频率DampFrequency=NatualFrequency*sqrt(1-Damp*Damp); %计算公式化简e_t=exp(-Damp*NatualFrequency*Dt);s=sin(DampFrequency*Dt);c=cos(DampFrequency*Dt);A=zeros(2,2);A(1,1)=e_t*(s*Damp/sqrt(1-Damp*Damp)+c);A(1,2)=e_t*s/DampFrequency;A(2,1)=-NatualFrequency*e_t*s/sqrt(1-Damp*Damp);A(2,2)=e_t*(-s*Damp/sqrt(1-Damp*Damp)+c);d_f=(2*Damp^2-1)/(NatualFrequency^2*Dt);d_3t=Damp/(NatualFrequency^3*Dt);B=zeros(2,2);B(1,1)=e_t*((d_f+Damp/NatualFrequency)*s/DampFrequency+(2*d_3t+1/NatualFrequency^2)*c)-2*d_3 t;B(1,2)=-e_t*(d_f*s/DampFrequency+2*d_3t*c)-1/NatualFrequency^2+2*d_3t;B(2,1)=e_t*((d_f+Damp/NatualFrequency)*(c-Damp/sqrt(1-Damp^2)*s)-(2*d_3t+1/NatualFrequency^2 )*(DampFrequency*s+Damp*NatualFrequency*c))+1/(NatualFrequency^2*Dt);B(2,2)=e_t*(1/(NatualFrequency^2*Dt)*c+s*Damp/(NatualFrequency*DampFrequency*Dt))-1/(NatualF requency^2*Dt);for i=1:(N-1) %根据地震记录,计算不同的反应Displace(i+1)=A(1,1)*Displace(i)+A(1,2)*Velocity(i)+B(1,1)*Accelerate(i)+B(1,2)*Accelerate(i +1);Velocity(i+1)=A(2,1)*Displace(i)+A(2,2)*Velocity(i)+B(2,1)*Accelerate(i)+B(2,2)*Accelerate(i +1);AbsAcce(i+1)=-2*Damp*NatualFrequency*Velocity(i+1)-NatualFrequency^2*Displace(i+1);endMaxD(1,t)=max(abs(Displace));MaxV(1,t)=max(abs(Velocity));if T==0.0MaxA(1,t)=max(abs(Accelerate));elseMaxA(1,t)=max(abs(AbsAcce));endDisplace=zeros(1,N);%初始化各储存向量,避免下次不同周期计算时引用到前一个周期的结果Velocity=zeros(1,N);AbsAcce=zeros(1,N);t=t+1;End% ***********PLOT***********close allfigure %绘制地震记录图plot(time(:),Accelerate(:))title('PEER STRONG MOTION DATABASE RECORD')xlabel('time(s)')ylabel('acceleration(g)')gridfigure %绘制位移反应谱plot(TA,MaxD(1,:),'-.b',TA,MaxD(2,:),'-r',TA,MaxD(3,:),':k')title('Displacement')xlabel('Tn(s)')ylabel('Displacement(m)')legend('ζ=0.02')Gridfigure %绘制速度反应谱plot(TA,MaxV(1,:),'-.b',TA,MaxV(2,:),'-r',TA,MaxV(3,:),':k') title('Velocity')xlabel('Tn(s)')ylabel('velocity(m/s)')legend('ζ=0.02')Gridfigure %绘制绝对加速度反应谱plot(TA,MaxA(1,:),'-.b',TA,MaxA(2,:),'-r',TA,MaxA(3,:),':k') title('Absolute Acceleration')xlabel('Tn(s)')ylabel('absolute acceleration(m/s^2)')legend('ζ=0.02')Grid3 运行的结果得到的反应谱图2 位移反应谱图3 速度反应谱图4 加速度反应谱一、反应谱生成地震波1所取的反应谱为上海市设计反应谱图5 上海市设计反应谱2反应谱取值程序为:%%规范反应谱取值程序参照01年抗震规范function rs_z=r_s_1(pl,zn,ld,cd,fz) %%%pl 圆频率,zn阻尼比,ld烈度,cd场地类型,场地分组fz %%%%烈度选择if ld==6arfmax=0.11;endif ld==7arfmax=0.23;endif ld==8arfmax=0.45;endif ld==9arfmax=0.90;end%%%%场地类别,设计地震分组选择if cd==1if fz==1Tg=0.25;endif fz==2Tg=0.30;endif fz==3Tg=0.35;endendif cd==2if fz==1Tg=0.35;if fz==2Tg=0.40;endif fz==3Tg=0.45;endendif cd==3if fz==1Tg=0.45;endif fz==2Tg=0.55;endif fz==3Tg=0.65;endendif cd==4if fz==1Tg=0.65;endif fz==2Tg=0.75;endif fz==3Tg=0.90;endend%%%%%%%%%ceita=zn; %%%%%阻尼比lmt1=0.02+(0.05-ceita)/8;if lmt1<0lmt1=0;endlmt2=1+(0.05-ceita)/(0.06+1.7*ceita); if lmt2<0.55lmt2=0.55;endsjzs=0.9+(0.05-ceita)/(0.5+5*ceita); %%%%%分段位置 T1 T2 T3T1=0.1;T2=Tg;T_jg=2*pi./pl;%%%% 第一段 0~T1if T_jg<=T1arf_jg=0.45*arfmax+(lmt2*arfmax-0.45*arfmax)/0.1*T_jg;end%%%% 第二段 T1~T2if T1<T_jg&T_jg<=T2arf_jg=lmt2*arfmax;end%%%% 第三段 T2~T3if T2<T_jg&T_jg<=T3arf_jg=((Tg/T_jg)^sjzs)*lmt2*arfmax;end%%%% 第四段 T3~6.0if T3<T_jg&T_jg<=6.0arf_jg=(lmt2*0.2^sjzs-lmt1*(T_jg-5*Tg))*arfmax;end%%%% 第五段 6.0~if 6.0<T_jgarf_jg=(lmt2*0.2^sjzs-lmt1*(6.0-5*Tg))*arfmax;end%%%%%%反应谱值拟加速度值rs_z=arf_jg*9.8;end3生成人造地震波主程序:%%%主程序%%%%%%%%确定需要控制的反应谱Sa(T)(T=T1,...,TM)的坐标点数M,反应谱控制容差rc Tyz=[0.04:0.016:0.1,0.15:0.05:3.0,3.2:0.05:5.0];rc=0.06;nTyz=length(Tyz);ceita=0.035;%%%阻尼比:0.035for i=1:nTyzSyz(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1); %%%%8度,2类场地,第1地震分组end%%%%%% 变换的频率差:2*pi*0.005(可以保证长周期项5s附近有5项三角级数);%%%%频率变化范围 N1=30, 30*0.005*2*pi ;N2=3000, 5000*0.005*2*piplc=2*pi*0.005;pl=30*0.005*2*pi:0.005*2*pi:10000*0.005*2*pi;npl=length(pl);P=0.9; %%%保证率%%%%%%人造地震动持续时间40s,时间间隔:0.02sTd=40;dt=0.02;t=0:0.02:40;nt=length(t);%%%%%%% 衰减包络函数t1=8; %%%%上升段t2=8+24; %%%%%平稳段; 下降段则为40-32=8sc=0.6; %%%%衰减段参数for i=1:ntif t(i)<=t1f(i)=(t(i)/t1)^2;endif t(i)>t1 & t(i)<t2f(i)=1;endif t(i)>=t2f(i)=exp(-c*(t(i)-t2));endend%%%%%%% 反应谱转换功率谱for i=1:nplSw(i)=(2*ceita/(pi*pl(i)))*r_s_1(pl(i),ceita,8,2,1)^2/(-2*log(-1*pi*log(P)/(pl(i)*Td))); Aw(i)=sqrt(4*Sw(i)*plc);end%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfai(i)=rand(1)*2*pi;for j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求,需要时程动力分析%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=1;while max(rcrsp(:))>rc%%%%%循环体函数blxs=Syz./rspa;for xsxs=1:nplif 2*pi/pl(xsxs)<Tyz(1)blxs1(xsxs)=blxs(1);endfor sxsx=1:nTyz-1if (2*pi/pl(xsxs)>=Tyz(sxsx)) & (2*pi/pl(xsxs)<=Tyz(sxsx+1))blxs1(xsxs)=blxs(sxsx)+(blxs(sxsx+1)-blxs(sxsx))*(2*pi/pl(xsxs)-Tyz(sxsx))/(Tyz(sxsx+1)-Tyz(sxsx));endendif 2*pi/pl(xsxs)>Tyz(nTyz)blxs1(xsxs)=blxs(nTyz);endendAw=Aw.*blxs1;%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfor j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=jsnum+1max(rcrsp(:))end%%%%%%% 最终的反应谱与规范谱%%%%%%%%%%%% response spectra of callidar%%%%%%% parameter%% Tjs=0.05:0.01:6;%% nTjs=length(Tjs);g=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0));dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i)/g;rspa_S(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1)/g;endsubplot(2,1,1);plot(t,at);subplot(2,1,2);plot(Tyz,rspa);hold on;plot(Tyz,rspa_S);4生成的人造地震波如图所示。

地震工程学-反应谱和地震时程波的相互转化matlab编程

地震工程学-反应谱和地震时程波的相互转化matlab编程

地震工程学作业课程名称:地震工程学______指导老师:_______翟永梅_________姓名:史先飞________学号:1232627________一、地震波生成反应谱1 所取的地震波为Elcentro地震波加速度曲线,如图1所示。

图1 Elcentro地震波加速度曲线2 所调用的Matlab程序为:% ***********读入地震记录***********ElCentro;Accelerate= ElCentro(:,1)*9.8067;%单位统一为m和sN=length(Accelerate);%N 读入的记录的量time=0:0.005:(N-1)*0.005; %单位 s%初始化各储存向量Displace=zeros(1,N); %相对位移Velocity=zeros(1,N); %相对速度AbsAcce=zeros(1,N); %绝对加速度% ***********A,B矩阵***********Damp=0.02; %阻尼比0.02TA=0.0:0.05:6; %TA=0.000001:0.02:6; %结构周期Dt=0.005; %地震记录的步长%记录计算得到的反应,MaxD为某阻尼时最大相对位移,MaxV为某阻尼最大相对速度,MaxA某阻尼时最大绝对加速度,用于画图MaxD=zeros(3,length(TA));MaxV=zeros(3,length(TA));MaxA=zeros(3,length(TA));t=1;for T=0.0:0.05:6NatualFrequency=2*pi/T ; %结构自振频率DampFrequency=NatualFrequency*sqrt(1-Damp*Damp); %计算公式化简e_t=exp(-Damp*NatualFrequency*Dt);s=sin(DampFrequency*Dt);c=cos(DampFrequency*Dt);A=zeros(2,2);A(1,1)=e_t*(s*Damp/sqrt(1-Damp*Damp)+c);A(1,2)=e_t*s/DampFrequency;A(2,1)=-NatualFrequency*e_t*s/sqrt(1-Damp*Damp);A(2,2)=e_t*(-s*Damp/sqrt(1-Damp*Damp)+c);d_f=(2*Damp^2-1)/(NatualFrequency^2*Dt);d_3t=Damp/(NatualFrequency^3*Dt);B=zeros(2,2);B(1,1)=e_t*((d_f+Damp/NatualFrequency)*s/DampFrequency+(2*d_3t+1/NatualFrequency^2)*c)-2*d_3 t;B(1,2)=-e_t*(d_f*s/DampFrequency+2*d_3t*c)-1/NatualFrequency^2+2*d_3t;B(2,1)=e_t*((d_f+Damp/NatualFrequency)*(c-Damp/sqrt(1-Damp^2)*s)-(2*d_3t+1/NatualFrequency^2 )*(DampFrequency*s+Damp*NatualFrequency*c))+1/(NatualFrequency^2*Dt);B(2,2)=e_t*(1/(NatualFrequency^2*Dt)*c+s*Damp/(NatualFrequency*DampFrequency*Dt))-1/(NatualF requency^2*Dt);for i=1:(N-1) %根据地震记录,计算不同的反应Displace(i+1)=A(1,1)*Displace(i)+A(1,2)*Velocity(i)+B(1,1)*Accelerate(i)+B(1,2)*Accelerate(i +1);Velocity(i+1)=A(2,1)*Displace(i)+A(2,2)*Velocity(i)+B(2,1)*Accelerate(i)+B(2,2)*Accelerate(i +1);AbsAcce(i+1)=-2*Damp*NatualFrequency*Velocity(i+1)-NatualFrequency^2*Displace(i+1);endMaxD(1,t)=max(abs(Displace));MaxV(1,t)=max(abs(Velocity));if T==0.0MaxA(1,t)=max(abs(Accelerate));elseMaxA(1,t)=max(abs(AbsAcce));endDisplace=zeros(1,N);%初始化各储存向量,避免下次不同周期计算时引用到前一个周期的结果Velocity=zeros(1,N);AbsAcce=zeros(1,N);t=t+1;End% ***********PLOT***********close allfigure %绘制地震记录图plot(time(:),Accelerate(:))title('PEER STRONG MOTION DATABASE RECORD')xlabel('time(s)')ylabel('acceleration(g)')gridfigure %绘制位移反应谱plot(TA,MaxD(1,:),'-.b',TA,MaxD(2,:),'-r',TA,MaxD(3,:),':k')title('Displacement')xlabel('Tn(s)')ylabel('Displacement(m)')legend('ζ=0.02')Gridfigure %绘制速度反应谱plot(TA,MaxV(1,:),'-.b',TA,MaxV(2,:),'-r',TA,MaxV(3,:),':k') title('Velocity')xlabel('Tn(s)')ylabel('velocity(m/s)')legend('ζ=0.02')Gridfigure %绘制绝对加速度反应谱plot(TA,MaxA(1,:),'-.b',TA,MaxA(2,:),'-r',TA,MaxA(3,:),':k') title('Absolute Acceleration')xlabel('Tn(s)')ylabel('absolute acceleration(m/s^2)')legend('ζ=0.02')Grid3 运行的结果得到的反应谱图2 位移反应谱图3 速度反应谱图4 加速度反应谱一、反应谱生成地震波1所取的反应谱为上海市设计反应谱图5 上海市设计反应谱2反应谱取值程序为:%%规范反应谱取值程序参照01年抗震规范function rs_z=r_s_1(pl,zn,ld,cd,fz) %%%pl 圆频率,zn阻尼比,ld烈度,cd场地类型,场地分组fz %%%%烈度选择if ld==6arfmax=0.11;endif ld==7arfmax=0.23;endif ld==8arfmax=0.45;endif ld==9arfmax=0.90;end%%%%场地类别,设计地震分组选择if cd==1if fz==1Tg=0.25;endif fz==2Tg=0.30;endif fz==3Tg=0.35;endendif cd==2if fz==1Tg=0.35;if fz==2Tg=0.40;endif fz==3Tg=0.45;endendif cd==3if fz==1Tg=0.45;endif fz==2Tg=0.55;endif fz==3Tg=0.65;endendif cd==4if fz==1Tg=0.65;endif fz==2Tg=0.75;endif fz==3Tg=0.90;endend%%%%%%%%%ceita=zn; %%%%%阻尼比lmt1=0.02+(0.05-ceita)/8;if lmt1<0lmt1=0;endlmt2=1+(0.05-ceita)/(0.06+1.7*ceita); if lmt2<0.55lmt2=0.55;endsjzs=0.9+(0.05-ceita)/(0.5+5*ceita); %%%%%分段位置 T1 T2 T3T1=0.1;T2=Tg;T_jg=2*pi./pl;%%%% 第一段 0~T1if T_jg<=T1arf_jg=0.45*arfmax+(lmt2*arfmax-0.45*arfmax)/0.1*T_jg;end%%%% 第二段 T1~T2if T1<T_jg&T_jg<=T2arf_jg=lmt2*arfmax;end%%%% 第三段 T2~T3if T2<T_jg&T_jg<=T3arf_jg=((Tg/T_jg)^sjzs)*lmt2*arfmax;end%%%% 第四段 T3~6.0if T3<T_jg&T_jg<=6.0arf_jg=(lmt2*0.2^sjzs-lmt1*(T_jg-5*Tg))*arfmax;end%%%% 第五段 6.0~if 6.0<T_jgarf_jg=(lmt2*0.2^sjzs-lmt1*(6.0-5*Tg))*arfmax;end%%%%%%反应谱值拟加速度值rs_z=arf_jg*9.8;end3生成人造地震波主程序:%%%主程序%%%%%%%%确定需要控制的反应谱Sa(T)(T=T1,...,TM)的坐标点数M,反应谱控制容差rc Tyz=[0.04:0.016:0.1,0.15:0.05:3.0,3.2:0.05:5.0];rc=0.06;nTyz=length(Tyz);ceita=0.035;%%%阻尼比:0.035for i=1:nTyzSyz(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1); %%%%8度,2类场地,第1地震分组end%%%%%% 变换的频率差:2*pi*0.005(可以保证长周期项5s附近有5项三角级数);%%%%频率变化范围 N1=30, 30*0.005*2*pi ;N2=3000, 5000*0.005*2*piplc=2*pi*0.005;pl=30*0.005*2*pi:0.005*2*pi:10000*0.005*2*pi;npl=length(pl);P=0.9; %%%保证率%%%%%%人造地震动持续时间40s,时间间隔:0.02sTd=40;dt=0.02;t=0:0.02:40;nt=length(t);%%%%%%% 衰减包络函数t1=8; %%%%上升段t2=8+24; %%%%%平稳段; 下降段则为40-32=8sc=0.6; %%%%衰减段参数for i=1:ntif t(i)<=t1f(i)=(t(i)/t1)^2;endif t(i)>t1 & t(i)<t2f(i)=1;endif t(i)>=t2f(i)=exp(-c*(t(i)-t2));endend%%%%%%% 反应谱转换功率谱for i=1:nplSw(i)=(2*ceita/(pi*pl(i)))*r_s_1(pl(i),ceita,8,2,1)^2/(-2*log(-1*pi*log(P)/(pl(i)*Td))); Aw(i)=sqrt(4*Sw(i)*plc);end%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfai(i)=rand(1)*2*pi;for j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求,需要时程动力分析%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=1;while max(rcrsp(:))>rc%%%%%循环体函数blxs=Syz./rspa;for xsxs=1:nplif 2*pi/pl(xsxs)<Tyz(1)blxs1(xsxs)=blxs(1);endfor sxsx=1:nTyz-1if (2*pi/pl(xsxs)>=Tyz(sxsx)) & (2*pi/pl(xsxs)<=Tyz(sxsx+1))blxs1(xsxs)=blxs(sxsx)+(blxs(sxsx+1)-blxs(sxsx))*(2*pi/pl(xsxs)-Tyz(sxsx))/(Tyz(sxsx+1)-Tyz(sxsx));endendif 2*pi/pl(xsxs)>Tyz(nTyz)blxs1(xsxs)=blxs(nTyz);endendAw=Aw.*blxs1;%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfor j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=jsnum+1max(rcrsp(:))end%%%%%%% 最终的反应谱与规范谱%%%%%%%%%%%% response spectra of callidar%%%%%%% parameter%% Tjs=0.05:0.01:6;%% nTjs=length(Tjs);g=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0));dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i)/g;rspa_S(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1)/g;endsubplot(2,1,1);plot(t,at);subplot(2,1,2);plot(Tyz,rspa);hold on;plot(Tyz,rspa_S);4生成的人造地震波如图所示。

地震工程学大作业代码3求人工波

地震工程学大作业代码3求人工波

w=linspace(0,100,10000); %生成周期矩阵kesai=[0.72 0.8]; %输入阻尼矩阵w0=[20.94 13.96]; %输入周期矩阵w1=0.15*w0;kesai1=kesai;t=linspace(0,40,2001); %生成时间矩阵,便于后期画图t1=[0.8 1.2]; %输入强度函数相关参数t2=[7 9];c=[0.35 0.25];file_id='D:\人造波\';mkdir(file_id); %创建文件夹保存生成的所有图和地震动数据for i=1:2 %利用循环以此计算两类地震动数据for j=1:10000 %利用循环计算功率谱a=(1+4*kesai(1)^2*(w(j)/w0(i))^2)*(w(j)/w1(i))^4;b=(1-(w(j)/w0(i))^2)^2+4*kesai(i)^2*(w(j)/w0(i))^2;d=(1-(w(j)/w1(i))^2)^2+4*kesai1(i)^2*(w(j)/w1(i))^2;S(j)=a*0.0252/(b*d);A(j)=sqrt(2*S(j)*(w(2)-w(1))/pi); %计算对应振幅end %功率谱计算结束fai=repmat(2*pi*rand(10000,1)-pi,1,2001);%生成相位矩阵for n=1:2001 %计算强度函数值gt(n)=g(t(n),t1(i),t2(i),c(i));endacceleration=A*cos(w'*t+fai).*gt; %计算地震动数据N= find(abs(acceleration)>=0.02*max(abs(acceleration)));%寻找截断点figure(2*i-1); %利用figure函数控制图形窗口plot(w,S); %得到功率谱图name=strcat(num2str(i+1),'类场地人工波功率谱');title(name);set(gcf,'position',get(0,'screensize')); %图形全屏,便于查看F=getframe(gcf);imwrite(F.cdata,[file_id,strcat(name,'.png')]); %存储功率谱图形figure(2*i);plot(t(1:N(end)),acceleration(1:N(end))); %画地震动时程图name=strcat(num2str(i+1),'类场地人工波加速度时程');title(name);set(gcf,'position',get(0,'screensize')); %图形全屏,便于查看F=getframe(gcf);imwrite(F.cdata,[file_id,strcat(name,'.png')]); %存储地震动时程图xlswrite(strcat(file_id,'第',num2str(i+1),'类场地人工波.xls'),[t(1:N(end));acceleration(1:N(end))]');%存储地震动数据end%%function gt=g(t,t1,t2,c)%强度包络函数计算if t<t1gt=(t/t1)^2;elseif t>t2gt=exp(-c*(t-t2));elsegt=1;endend。

地震射线弯曲法程序matlab

地震射线弯曲法程序matlab

在地球科学领域中,地震射线弯曲法程序matlab是一个非常重要的工具。

地震是地球内部的一种自然现象,而地震射线弯曲法则是利用地震波在地球内部的传播路径来研究地球结构的一种方法。

在这篇文章中,我将深入探讨地震射线弯曲法程序matlab的原理、应用和意义,帮助你更全面地理解这一重要领域。

1. 地震射线弯曲法程序matlab是什么?地震射线弯曲法程序matlab是一种针对地震波传播路径和速度结构进行研究的数值模拟工具。

它利用了地震波在地球内部传播的特点,通过对地震波传播路径的模拟和反演,可以获得地球内部结构的信息。

在地震勘探、地质勘探和地球物理学研究中,地震射线弯曲法程序matlab扮演着至关重要的角色。

2. 地震射线弯曲法程序matlab的原理和方法地震射线弯曲法程序matlab的原理基于地震波在地球内部传播的轨迹。

当地震波穿过地球内部的不同介质时,由于介质的不均匀性,地震波路径会产生弯曲和偏折。

地震射线弯曲法程序matlab通过模拟地震波传播路径的弯曲情况,来推断地球内部的速度结构和地质构造。

它基于数学和物理原理,利用计算机编程进行地震波路径的数值模拟和反演,从而揭示地球内部结构的特征。

3. 地震射线弯曲法程序matlab的应用领域地震射线弯曲法程序matlab在地球科学领域有着广泛的应用。

它可以用于地震勘探,帮助地震学家和地球物理学家了解地球内部的速度结构和地质构造,从而寻找地下资源和研究地壳运动。

地震射线弯曲法程序matlab还可以用于地质勘探,帮助地质学家识别地下的地质体和构造,为工程建设和地质灾害防治提供重要信息。

4. 地震射线弯曲法程序matlab的意义和价值地震射线弯曲法程序matlab的意义和价值在于它可以帮助我们更好地理解地球内部的结构和演化过程。

通过对地震波传播路径的模拟和反演,我们可以揭示地球内部的奥秘,为地质学、地球物理学和地球科学的发展提供重要支持。

地震射线弯曲法程序matlab还可以为地球资源勘探和自然灾害预警提供科学依据,对于人类的生存和发展具有重要意义。

单自由度地震能量计算的程序matlab

单自由度地震能量计算的程序matlab

funct ion responsenew%基于戏线性滞冋模型的单自由度体系的地震能虽分析程序%made by Yanan Li Faculty of Infrastructure Enginoering弔Dalian University of Technology%质量57041kg,阻尼36612 N s/叫初始刚度2350000N/m,刚度折减系数0. 2,屈服位移0・01m, 采用ELCENTRO波%参数替换直接在下面修改,然后运行clcformat long;m=57041;% 质量ug= importdataC* ELCENTRO. txt') ;%地震波txt 文件ug=ug/100;P=-m*ug;num=size(P, 1);c 二36612; % 阻尼k 1=2350000; %初始刚度k2二kl*0・2;a=zeros(l t num) ;v=zeros(l, num) ;x=zeros(l, num);%加速度速度位移Ei=zeros(l, num);Ek二zeros(1, num);Ed二zeros(1, num); Eh二zeros (1, num)输入能动能阻尼耗能滞回耗能EI=zeros(l t num); EK二zeros (1, num) ;ED=zeros(l, num) ;EH=zeros(l, num) ;%累积的各种能量t imc=zeros(l, num);a(l)=P (l)/m;hfl=zeros (1, num);h=0. 02;%地震波采样间隔Xy=0.01;%屈服位移pxmax=0;nxmax-0;pd=0;%双线型滞冋模型折线的标识,0农示弹性,1表示正向弹犁性,2表示反向弹性,-1 表示反向弹塑性,-2表示正向弹性for ii=l:numif pd==0 %弹性阶段k二kl;if x(ii)>Xypd=l;b=[(a(ii)-a(ii-l))/6/h a(ii~l)/2 v(ii-l) x(iiT)-Xy];% 拐点处理d=roots(b);for j=l:length(d)if isreal (d(j))==ldth=d(j);endendhp二h-dth;vp=v(ii-l)+a(ii-l)*dth+((a(ii)-a(ii-l))*dth*2/h/2);ap=a(i i-l) + (a (i i)-a(ii-l)) *dth/h;pp=m*ap+c*vp+kl*Xy;kd=k2+3*c/hp+6*m/hp/hp;dtpd=P(i i +1) -pp+m* (6*vp/hp+3*ap) +c* (3*vp^-hp*ap/2); dtx=dtpd/kd;dtv=3*dtx/hp-3*vp-hp*ap/2;x(ii)=Xy+dtx;v(ii)=vp^dtv;dtf=k2*dtx;hfl(ii)=kl*Xy+dtf;a(ii) = (P(ii)-hfl (i i+1)-c*v(i i))/m;elseif x(ii)<-Xypd=-l;b=[(a(ii)-a(ii-l))/6/h a(ii-l)/2 v(iiT) x(iiT)+Xy];% 拐点处理d=roots(b);for j=l:length(d)if isreal (d(j))==ldth=d(j);endendhp=h-dth;vp=v(i i 1)・a(i i 1)*dth+ ((a(ii)-a(ii-l))*dth"2/h/2); ap a(ii-l) + (a(ii)-a(ii-l))*dth/h;pp=m*ap+c*vp_k1*Xy; kd=k2+3*c/hp+6*m/hp/hp;dtpd=P (i i + 1)-pp+m*(6*vp/hp+3*ap)(3*vp^hp*ap/2);dtx=dtpd/kd;dtv-3*dtx/hp-3*vp-hp*ap/2;x(ii)=-Xy+dtx: v(i i)=vp^dtv;dtf=k2*dtx; hfl(ii)=-kl*Xy+dtf;a(i i) = (P(i i)-hf 1 (i i)-c*v(ii))/m;endendif pd==l %正向弹塑性k=k2;if v(ii)<0pd=2;b=[(a(ii)-a(ii-l))/2/h a(ii-l) v(ii-l)];% 拐点处理d二rools(b);for j=l:length(d)if isreal (d(j))==ldth=d (j);endendhp=h-dth;xp=x(iiT)+v(i i-1) *dth+a (i i-1) *dth*2/2+ (a (i i) -a (i i-l))*dth*3/h/6; ap=a (i i-1)+ (a (i i) -a (i i-1)) *dth/h;pp-m*ap+c*O+k1*Xy+k2* (xp-Xy);kd=kl+3*c/hp+6*m/hp/hp:dtpd=P(ii+l)-pp+m*(6*0/hp+3*ap)+c*(3*0+hp*ap/2);dtx=dtpd/kd;dtv=3*dtx/hp-3*0-hp*ap/2;x(i i)=xp+dtx;v(ii)=O+dtv;dtf=kl*dtx;hfl(ii)=kl*Xy+k2*(xp-Xy)+dtf;a(ii) = (P(ii)-hfl (ii)-c*v(ii))/m;pxmax=xp;endif pd==2 %反向弹性k=kl;if x (i i)>pxmaxpd=l; ■b=[(a(ii)-a(ii-l))/6/h a(ii-l)/2 v(ii-l) x(ii-l)-pxmax]:% 拐点处理d=roots(b);for j=l:length(d)if isreal (d(j))==I dth=d(j);endendhp=h-dth; vp=v(ii-l)+a(ii-l)*dth+((a(ii)-a(ii-l))*dth"2/h/2); ap=a(ii-l)+(a(ii)-a(ii-l))*dth/h;pp-m*ap+c*vp+k1*Xy+k2*(pxmax-Xy); kd=k2+3*c/hp+6*m/hp/hp;dtpd=P(ii+1)-pp+m*(6*vp/hp+3*ap)+c*(3*vp+hp*ap/2); dtx=dtpd/kd;d t v=3*d1x/hp-3*vp-hp*ap/2;x(i i)二pxmax+dtx;v(ii)=vp+dtv;dtf=k2*dtx;hfl (i i)=kl*Xy+k2*(pxmax-Xy) +dtf;a(ii) = (P(ii)-hfl (ii)-c*v(ii))/m;el seif x (i i)<(pxmax~2*Xy)pd=-l;―.・pu og 、(( =)A *3—(二二Jq —(二)d )H(二)P,±P +AX盖〒Ax*上—殳艾舌 X F (二二jqEp*znp 2p+dA:=(=)A-xlp+AX*zlxpulxdu(二)x,z 、dB*dqld 家gldv、xlp^HA4p&<p d "P H X 4p-(z 、dp*dfdA*g)芯+(du*g+dq、dA*9)*u+dd —(7二)dupdpp -dq'dq'lu 关 9+dqb苗+0上HP上-(xx*^IAX*>l —z>l*xeulxd) +d A *o +d e *u "dd2>-p*(〒二)E —(=)B)+U丄一)fde二z 'q 'Fe p 決((TT OF(U)P ))+±P*II )P +UI )AH D A召p —qudqp u a)pUO」(「)p*pTH((「)P 二p冒岛(P)£8U 上二丄joj-(q)s_oof p三P+O A=)Awp+dxH(二)x-z 、dydq —0^—dq、w'pdup,(z 、d¥dq+o為)*¥(dp*e+dq/0*9)*lu+dd —(I +二)dupdlp‘ d<dq 、ul*9+d<。

最新地震工程作业哈工大 MATLAB程序资料

最新地震工程作业哈工大  MATLAB程序资料

地震工程大作业哈工大 李金平弹性反应谱原创性声明,主程序由本人独立编写完成,支持各种检验。

所选地震动RSN2345CHICHI.AT2 peer 索取号:234510203040506070-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.25时间 (s)加速度 (m /s 2):位移反应谱12345678910周期T (s)位移 (m m )局部放大11.021.041.06 1.081.11.129.29.259.39.359.49.459.59.559.69.659.7周期T (s)位移 (m m )求比值123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值绝对加速度反应谱0.20.40.60.81 1.2 1.41.61.8200.10.20.30.40.50.60.70.80.91周期T (s)S a (m /s 2)局部放大-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.250.150.20.250.30.350.40.45周期T (s)S a (m /s 2)求比值进行比较123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值速度反应谱1234567891000.010.020.030.040.050.060.070.080.090.1周期T (s)速度 (m/s )局部放大观察差异00.020.040.060.080.10.12-4周期T (s)速度 (m /s )求比值进行比较。

123456789100.70.80.911.11.21.3周期T (s)比值结论:对比:拟合效果非常好,短周期0s<T<0.2s误差较大,其中相对速度谱的误差较大,接近30%,加速度和位移误差都在3%以内,周期0.2s<T<10s各反应谱的误差都保持在1%以内,精度相同,猜想,两种计算程序应该用的同一种计算方法(newmark法)。

地震资料处理中的matlab实现

地震资料处理中的matlab实现

地震资料处理中的matlab实现(原创实用版)目录1.引言2.地震资料处理的重要性3.MATLAB 在地震资料处理中的应用3.1 频谱分析3.2 设计 FIR 数字滤波器3.3 并行处理4.结论正文地震资料处理中的 matlab 实现地震是一种常见的自然灾害,对人类社会造成了巨大的破坏。

地震资料处理是指对地震波形数据进行分析、挖掘和研究的过程,对于地震预警、预测和研究具有重要意义。

在这个过程中,MATLAB 作为一种强大的科学计算工具,得到了广泛的应用。

地震资料处理的重要性地震资料处理是地震学研究的基础。

通过对地震波形的分析,可以了解地震的性质、地震波的传播特征以及地震对地表的影响等。

此外,地震资料处理还对地震预警和预测具有重要意义。

及时、准确地处理地震波形数据,有助于我们快速了解地震的发生、震级和震源等信息,为地震应急响应提供科学依据。

MATLAB 在地震资料处理中的应用MATLAB 在地震资料处理中有广泛的应用,主要包括以下几个方面:3.1 频谱分析频谱分析是一种研究信号频率特性的方法。

在地震资料处理中,通过对地震波形进行频谱分析,可以了解地震波的频率成分和能量分布等。

MATLAB 提供了丰富的频谱分析函数,如 spectrogram、periodogram 等,方便用户进行地震波形的频谱分析。

3.2 设计 FIR 数字滤波器在地震波形处理中,滤波器是一种常用的方法,可以消除噪声、消除干扰等。

MATLAB 提供了丰富的滤波器设计函数,如 butter、Chebyshev 等。

用户可以根据地震波形的特点,设计合适的 FIR 数字滤波器,对地震波形进行滤波处理。

3.3 并行处理地震资料处理往往涉及到大规模的数据分析和计算,传统的串行处理方式耗时较长。

MATLAB 支持并行处理功能,可以充分利用计算机的多核资源,提高地震资料处理的效率。

通过使用 MATLAB 的 parfor、paralloc 等功能,可以实现地震波形数据的并行处理。

地震资料处理中的matlab实现

地震资料处理中的matlab实现

地震资料处理中的matlab实现地震资料处理是地球科学领域的重要环节,通过对地震波的采集、记录和分析,可以获取有关地球内部结构和地震活动的重要信息。

而在地震资料处理过程中,matlab作为一种强大的科学计算软件,被广泛应用于地震数据的处理和分析中。

本文将就地震资料处理中matlab的实现进行全面评估,并提供深度和广度兼具的文章内容,以帮助读者更好地理解和掌握这一重要的地球科学领域技术。

一、地震数据的预处理在进行地震资料处理时,首先需要对采集到的地震数据进行预处理,以提高数据的质量和可靠性。

在matlab中,可以利用其丰富的信号处理工具箱,对地震波进行滤波、去噪和校正,以消除干扰和改善数据的清晰度和准确性。

利用matlab的数据可视化工具,可以直观地展现地震波的特征和变化,为后续分析提供重要参考。

二、地震波的特征提取地震波中蕴含着丰富的地质信息,而通过matlab的信号处理和特征提取工具,可以有效地捕获地震波的频率、振幅和相位等重要特征。

利用matlab的傅里叶变换、小波变换和时频分析等技术,可以对地震波进行频谱分析、频率特征提取和时域特征分析,从而揭示地下结构和地震活动的内在规律。

三、地震事件的定位和成像地震事件的定位和成像是地震资料处理的核心环节,而matlab中的地震成像、反演和逆时偏移等算法,可以帮助科学家准确定位地震震源和重建地下结构。

通过matlab的地震成像工具箱,可以实现三维地震成像和震源定位,同时结合自编程序和算法优化,还能够实现个性化的地震事件分析和成像,为地球内部结构和地震活动提供关键信息。

个人观点和总结在我看来,matlab在地震资料处理中的实现,不仅为地球科学研究提供了重要的技术支持,更为科学家们提供了丰富的数据处理、分析和成像工具,从而推动了地震学在地球科学领域的发展。

通过不断优化算法和完善工具,相信matlab将在地震资料处理领域发挥越来越重要的作用,为我们揭示地球内部的奥秘和预测地震活动提供更可靠的依据。

matlab时程分析法求解地震反应例题

matlab时程分析法求解地震反应例题

基于matlab编程的时程分析法求地震反应例题解:第(1)问format short gA=[0600110015002100250029003050205015001000600200-700-1300 -1700-2000-1800-1500-700-250-200-100000];B=A*350/max(A)%B矩阵所得元素为调幅后数值运行结果B=[068.852126.23172.13240.98286.89332.79401.64235.25172.13114.7568.85222.951-80.328-149.18-195.08-229.51-206.56-172.13-80.328 -28.689-22.951-11.475000]第(2)问第(3)问最大层间剪力为2817.69KN,最大加速度-556.95mm/s²解:第(1)问【同4.10(1)】format short gA=[0600110015002100250029003050205015001000600200-700-1300 -1700-2000-1800-1500-700-250200-100000];B=xg*2200/max(A)运行结果B=[0432.79793.4410821514.81803.32091.82524.61478.7 1082721.31432.79144.26-504.92-937.7-1226.2-1442.6-1298.4 -1082-504.92-180.33-144.26-72.131000]第(2)问第(3)问最大层间剪力为15059.904KN,最大加速度2019.447mm/s²附代码4.10弹性分析format short gag=[068.852126.23172.13240.98286.89332.79401.64235.25172.13114.75 68.85222.951-80.328-149.18-195.08-229.51-206.56-172.13-80.328-28.689];m=250;k=9000;zeta=0.08;t=0.05;deltaag=zeros(1,21);deltaP=zeros(1,21);deltax=zeros(1,21);deltaa=zeros(1,21);deltav =zeros(1,21);x=zeros(1,21);v=zeros(1,21);a=zeros(1,21);deltaag(21)=20-(-25);%Δag矩阵最后一个数是用1.05s的加速度减去1.00秒时候的加速度c=2*sqrt(k*m)*zeta;%求得阻尼系数c=2*0.08*√9000*250=240K=k+6*m/(t^2)+3*c/t;%求得刚度矩阵K(在弹性计算中刚度恒定,因此设为一个固定的数,以方便计算for n=1:20deltaag(n)=ag(n+1)-ag(n);end%计算变地面加速度矩阵for i=1:21deltaP(i)=-m*[deltaag(i)-6*v(i)/t-3*a(i)]+c*[3*v(i)+a(i)*t/2];deltax(i)=deltaP(i)/K;deltaa(i)=6*deltax(i)/(t^2)-6*v(i)/t-3*a(i);deltav(i)=a(i)*t+deltaa(i)*t/2;if i<21a(i+1)=a(i)+deltaa(i);v(i+1)=v(i)+deltav(i);x(i+1)=x(i)+deltax(i);endend%%绘图tmatrix=0:0.05:1;plot(tmatrix,a,'-bo','LineWidth',2,'color','k','MarkerSize',5,'MarkerEdgeColor','black',' MarkerFaceColor','red');title('加速度反应');xlabel('时间/s');ylabel('加速度/(mm/s^2)');text(0.2,200,'弹性结果');plot(tmatrix,x,'-bo','LineWidth',2,'color','k','MarkerSize',5,'MarkerEdgeColor','black',' MarkerFaceColor','red');title('位移反应');xlabel('时间/s');ylabel('位移/(mm)');text(0.2,5,'弹性结果');4.11弹塑性分析format short gag1=[0432.79793.4410821514.81803.32091.82524.61478.71082721.31432.79 144.26-504.92-937.7-1226.2-1442.6-1298.4-1082-504.92 -180.33];k1=zeros(1,21);m=250;k1(1)=9000;zeta=0.08;t=0.05;K1=zeros(1,21);deltaag1=zeros(1,21);deltaP1=zeros(1,21);deltax1=zeros(1,21);deltaa1=zeros(1,21);deltav1=zeros(1,21);x1=zeros(1,21);v1=zeros(1,21);a1=zeros(1,21);deltaag1(21)=-144.26-(-180.33);%Δag矩阵最后一个数是用1.05s的加速度减去1.00s时候的加速度c=2*sqrt(k1(1)*m)*zeta;%求得阻尼系数c=2*0.08*√9000*250=240for p=1:20deltaag1(p)=ag1(p+1)-ag1(p);end%计算变地面加速度矩阵for j=1:21deltaP1(j)=-m*(deltaag1(j)-6*v1(j)/t-3*a1(j))+c*(3*v1(j)+a1(j)*t/2);if abs(x1(j))<=2k1(j)=9000;elsek1(j)=0;endK1(j)=k1(j)+6*m/(t^2)+3*c/t;deltax1(j)=deltaP1(j)/K1(j);deltaa1(j)=6*deltax1(j)/(t^2)-6*v1(j)/t-3*a1(j);deltav1(j)=a1(j)*t+deltaa1(j)*t/2;if j<21a1(j+1)=a1(j)+deltaa1(j);v1(j+1)=v1(j)+deltav1(j);x1(j+1)=x1(j)+deltax1(j);endEnd%%绘图plot(tmatrix,a1,'-bo','LineWidth',2,'color','k','MarkerSize',5,'MarkerEdgeColor','black', 'MarkerFaceColor','red');title('加速度反应');xlabel('时间/s');ylabel('加速度/(mm/s^2)');text(0.2,200,'弹塑性分析结果');plot(tmatrix,x1,'-bo','LineWidth',2,'color','k','MarkerSize',5,'MarkerEdgeColor','black', 'MarkerFaceColor','red');title('位移反应');xlabel('时间/s');ylabel('位移/(mm)');text(0.7,-50,'弹塑性分析结果');。

地震资料处理中的matlab实现

地震资料处理中的matlab实现

地震资料处理中的matlab实现一、引言地震资料处理是地震科学研究和工程应用中的重要环节,旨在从采集到的地震信号中提取有用信息。

随着计算机技术的发展,Matlab作为一种功能强大的数学软件,已广泛应用于地震资料处理领域。

本文将介绍Matlab在地震资料处理中的应用及其优势与局限。

二、Matlab在地震资料处理中的应用1.数据预处理地震数据往往存在噪声、缺失值等问题,需要进行预处理。

Matlab提供了丰富的预处理函数,如滤波、插值、去噪等,为地震数据的预处理提供了便利。

2.地震信号处理Matlab中的信号处理工具箱(Signal Processing Toolbox)包含了许多适用于地震信号处理的函数,如滤波、傅里叶变换、小波变换等。

这些函数可以方便地对地震信号进行时域和频域分析。

3.地震数据可视化Matlab具有强大的图形绘制功能,可以方便地展示地震数据的时域和频域分布。

通过可视化,研究人员可以更直观地分析地震数据的特征,为后续的地震资料处理提供依据。

三、Matlab在地震资料处理中的具体实现1.数据读取与存储Matlab提供了读取和存储地震数据的函数,如读取SEG-Y格式的地震数据文件。

此外,还可以利用Matlab自定义函数读取其他格式的数据文件。

2.常用地震数据处理算法的Matlab实现Matlab中可以实现许多常用的地震数据处理算法,如线性滤波、指数滤波、中值滤波等。

以下以地震信号去噪为例,介绍Matlab在地震数据处理中的应用。

3.示例:地震信号去噪地震信号去噪是地震资料处理中的一个重要环节。

Matlab中可以使用多种去噪方法,如滑动平均滤波、卡尔曼滤波等。

以下是一个简单的滑动平均滤波去噪示例:% 读取地震信号file = "path/to/segy/file";data = readsegy(file);% 进行滑动平均滤波= length(data);window_size = 5;filtered_data = zeros(1, n);for i = 2:n-1window = data((i-window_size+1):(i+1));filtered_data(i) = mean(window);end% 绘制原始信号和滤波后的信号figure;subplot(2,1,1); plot(data); title("原始信号");subplot(2,1,2); plot(filtered_data); title("滤波后的信号");四、Matlab在地震资料处理中的优势与局限1.优势(1)强大的计算能力:Matlab可以快速地执行复杂的数学运算和算法,提高了地震资料处理的效率。

地震工程学大作业代码(求ELCENTRO波的位移

地震工程学大作业代码(求ELCENTRO波的位移

M=10^5*diag([3.4 3.4 3.2 3.2 3.0 2.8 2.7 2.6]); %输入质量矩阵K=10^8*(diag([4.4 4.2 4 3.8 3.6 3.4 3.2 1.6])+...diag([-2.2 -2.0 -2.0 -1.8 -1.8 -1.6 -1.6],1)+...diag([-2.2 -2.0 -2.0 -1.8 -1.8 -1.6 -1.6],-1)); %刚度矩阵[fai,w]=eig(inv(K)*M); %特征值问题求解omiga=1./diag(w.^0.5); %得到周期for i=1:8 %归一化振型[val,poi]=max(abs(fai(:,i)));fai(:,i)=fai(:,i)/fai(poi,i);endgama=fai'*M*ones(8,1)./diag(fai'*M*fai); %计算振型参与系数kesai=(0.1347+0.006306*omiga.^2)/2./omiga; %计算各阶阻尼file_id='D:\地震动响应图\';mkdir(file_id); %创建文件夹保存生成的所有图A= textread('NS.txt','%n'); %读取地震波数据N=length(A);mint=0.01; %求时间间隔T=(N-1)*mint;B=xlsread('T');allmotion=zeros(N,8); %用来存储所有时刻的位移allacceleration=zeros(N,8); %用来存储所有时刻的加速度值allacceleration(1,:)=A(1); %对0时刻加速度矩阵初始化allvelocity=zeros(N,8); %用于存储所有时刻速度vg(1)=0;xg(1)=0;for m=1:N-1 %计算场地速度、位移用于对加速度进行基线修正vg(m+1)=vg(m)+A(m)*mint+(A(m+1)-A(m))*mint/2;xg(m+1)=xg(m)+vg(m)*mint+A(m)*mint^2/2+mint^2*(A(m+1)-A(m))/6;endc1=28/13/T^2*(2*vg(N)-15/T^5*xg*(3*T*B(:,1).^2-2*B(:,1).^3)*mint); %计算系数c1c0=(vg(N)-c1*T^2/2)/T; %计算系数c0A=max(A)/max(abs(A-(c0+c1*B(:,1))))*(A-(c0+c1*B(:,1))); %修正后的地震波加速度xg=xg'-(0.5*c0*B(:,1).^2+1/6*c1*B(:,1).^3); %修正后的场地位移for i=1:8 %第三层循环用于对不同周期值计算反应S=1+kesai(i)*omiga(i)*mint+((omiga(i)*mint)^2)/6;for j=2:N %对每个周期利用NewMark方法进行数值积分得到对应值(具体请查看word文档)Q=2*omiga(i)*kesai(i)*allacceleration(j-1,i)*mint+...(omiga(i)^2)*(allvelocity(j-1,i)*mint+0.5*allacceleration(j-1,i)*mint^2);deltaa=-(gama(i)*(A(j)-A(j-1))+Q)/S;allacceleration(j,i)=allacceleration(j-1,i)+deltaa;allvelocity(j,i)= allvelocity(j-1,i)+allacceleration(j-1,i)*mint+deltaa*mint/2;allmotion(j,i)= allmotion(j-1,i)+allvelocity(j-1,i)*mint+0.5*allacceleration(j-1,i)*mint^2+...deltaa*(mint^2)/6;end %积分计算反应并存放在前面的空矩阵里endmotion1=allmotion*fai'; %计算位移acceleration=allacceleration*fai'; %计算加速度velocity=allvelocity*fai'; %计算速度for n=1:9figure('color','white') %利用figure函数准确的控制画图窗口if n~=9axis([0,50,-0.03,0.03]) %控制坐标轴范围,便于比较endgrid onhold onbox off%annotation('arrow',[0.132 0.132],[0.8 1]);%annotation('arrow',[0.8 1],[0.108 0.108]); %产生坐标轴箭头(可能不够美观)if n==1 %计算相关数据和得到图名name='底层层间位移时程';motion(:,n)=motion1(:,n);elseif n==9name='顶层位移时程';motion(:,9)=motion1(:,8)+xg;elsemotion(:,n)=motion1(:,n)-motion1(:,n-1);name=strcat('第',num2str(n-1),'-',num2str(n),'层间位移时程');endplot(B(:,1),motion(:,n),'linewidth',2) %画相对位移时程xlabel('时间(s)','FontName','宋体','FontSize',16); %x轴标注ylabel('位移(m)','FontName','宋体','FontSize',16); %y轴标注title(name,'FontName','宋体','FontSize',20) %标注图名set(gcf,'position',get(0,'screensize')); %图形全屏,便于查看shgF=getframe(gcf);imwrite(F.cdata,[file_id,strcat(name,'.png')]); %存储得到的时程图endGK=repmat(-[-2 -2 -1.8 -1.8 -1.8 -1.8 -1.6 -1.6]*10^8,N,1);%输入刚度矩阵motion(:,8)=motion1(:,8)-motion1(:,7); %计算顶层的层间相对位移Fq=motion(:,1:8).*GK; %计算剪力figure('color','white') %生成图形窗口,背景白色plot(B(:,1),Fq(:,1)) %画底层剪力时程图xlabel('时间(s)','FontName','宋体','FontSize',16); %x轴标注ylabel('剪力(N)','FontName','宋体','FontSize',16); %y轴标注title('底层剪力时程','FontName','宋体','FontSize',20); %标注图名set(gcf,'position',get(0,'screensize')); %图形全屏,便于查看F=getframe(gcf); %存储生成的图形imwrite(F.cdata,[file_id,strcat('底层剪力时程图','.png')]);maxFq=zeros(1,16);for f=1:8 %计算所需剪力和位移包络图数据,并得到便于画图的矩阵maxmotion(2*f-1)=max(abs(motion(:,f)));maxmotion(2*f)=maxmotion(:,2*f-1);maxFq(2*f-1)=max(abs(Fq(:,f)));maxFq(2*f)=max(abs(Fq(:,f)));endfigure('color','white')plot(maxmotion,[0 0.5 0.5 1 1 1.5 1.5 2 2 2.5 2.5 3 3 3.5 3.5 4],'k-');%生成层间位移包络图title('层间位移绝对值最大值包络图','FontName','宋体','FontSize',20); %标注图名text(maxmotion(1:2:16),0.25:0.5:4,num2str(maxmotion(1:2:16)')) %标注位移数据set(gcf,'position',get(0,'screensize')); %图形全屏,便于查看F=getframe(gcf);imwrite(F.cdata,[file_id,strcat('层间位移绝对值最大值包络图','.png')]); %存储图形figure('color','white')plot(maxFq/1000,[0 0.5 0.5 1 1 1.5 1.5 2 2 2.5 2.5 3 3 3.5 3.5 4],'k-');title('层间剪力绝对值最大值包络图','FontName','宋体','FontSize',20); %标注图名text(maxFq(1:2:16)/1000,0.25:0.5:4,num2str(0.001*maxFq(1,1:2:16)'),'FontSize',10);set(gcf,'position',get(0,'screensize')); %图形全屏,便于查看F=getframe(gcf);imwrite(F.cdata,[file_id,strcat('层间剪力绝对值最大值包络图','.png')]);。

地震工程学反应谱和地震时程波的相互转化matlab编程

地震工程学反应谱和地震时程波的相互转化matlab编程

地震工程学作业课程名称:地震工程学______ ****:_______***_________ 姓名:史先飞________ 学号:1232627________一、地震波生成反应谱1 所取的地震波为Elcentro地震波加速度曲线,如图1所示。

图1 Elcentro地震波加速度曲线2 所调用的Matlab程序为:% ***********读入地震记录***********ElCentro;Accelerate= ElCentro(:,1)*9.8067;%单位统一为m和sN=length(Accelerate);%N 读入的记录的量time=0:0.005:(N-1)*0.005; %单位 s%初始化各储存向量Displace=zeros(1,N); %相对位移Velocity=zeros(1,N); %相对速度AbsAcce=zeros(1,N); %绝对加速度% ***********A,B矩阵***********Damp=0.02; %阻尼比0.02TA=0.0:0.05:6; %TA=0.000001:0.02:6; %结构周期Dt=0.005; %地震记录的步长%记录计算得到的反应,MaxD为某阻尼时最大相对位移,MaxV为某阻尼最大相对速度,MaxA某阻尼时最大绝对加速度,用于画图MaxD=zeros(3,length(TA));MaxV=zeros(3,length(TA));MaxA=zeros(3,length(TA));t=1;for T=0.0:0.05:6NatualFrequency=2*pi/T ; %结构自振频率DampFrequency=NatualFrequency*sqrt(1-Damp*Damp); %计算公式化简e_t=exp(-Damp*NatualFrequency*Dt);s=sin(DampFrequency*Dt);c=cos(DampFrequency*Dt);A=zeros(2,2);A(1,1)=e_t*(s*Damp/sqrt(1-Damp*Damp)+c);A(1,2)=e_t*s/DampFrequency;A(2,1)=-NatualFrequency*e_t*s/sqrt(1-Damp*Damp);A(2,2)=e_t*(-s*Damp/sqrt(1-Damp*Damp)+c);d_f=(2*Damp^2-1)/(NatualFrequency^2*Dt);d_3t=Damp/(NatualFrequency^3*Dt);B=zeros(2,2);B(1,1)=e_t*((d_f+Damp/NatualFrequency)*s/DampFrequency+(2*d_3t+1/NatualFrequency^2)*c)-2*d_3 t;B(1,2)=-e_t*(d_f*s/DampFrequency+2*d_3t*c)-1/NatualFrequency^2+2*d_3t;B(2,1)=e_t*((d_f+Damp/NatualFrequency)*(c-Damp/sqrt(1-Damp^2)*s)-(2*d_3t+1/NatualFrequency^2 )*(DampFrequency*s+Damp*NatualFrequency*c))+1/(NatualFrequency^2*Dt);B(2,2)=e_t*(1/(NatualFrequency^2*Dt)*c+s*Damp/(NatualFrequency*DampFrequency*Dt))-1/(NatualF requency^2*Dt);for i=1:(N-1) %根据地震记录,计算不同的反应Displace(i+1)=A(1,1)*Displace(i)+A(1,2)*Velocity(i)+B(1,1)*Accelerate(i)+B(1,2)*Accelerate(i +1);Velocity(i+1)=A(2,1)*Displace(i)+A(2,2)*Velocity(i)+B(2,1)*Accelerate(i)+B(2,2)*Accelerate(i +1);AbsAcce(i+1)=-2*Damp*NatualFrequency*Velocity(i+1)-NatualFrequency^2*Displace(i+1);endMaxD(1,t)=max(abs(Displace));MaxV(1,t)=max(abs(Velocity));if T==0.0MaxA(1,t)=max(abs(Accelerate));elseMaxA(1,t)=max(abs(AbsAcce));endDisplace=zeros(1,N);%初始化各储存向量,避免下次不同周期计算时引用到前一个周期的结果Velocity=zeros(1,N);AbsAcce=zeros(1,N);t=t+1;End% ***********PLOT***********close allfigure %绘制地震记录图plot(time(:),Accelerate(:))title('PEER STRONG MOTION DATABASE RECORD')xlabel('time(s)')ylabel('acceleration(g)')gridfigure %绘制位移反应谱plot(TA,MaxD(1,:),'-.b',TA,MaxD(2,:),'-r',TA,MaxD(3,:),':k')title('Displacement')xlabel('Tn(s)')ylabel('Displacement(m)')legend('ζ=0.02')Gridfigure %绘制速度反应谱plot(TA,MaxV(1,:),'-.b',TA,MaxV(2,:),'-r',TA,MaxV(3,:),':k') title('Velocity')xlabel('Tn(s)')ylabel('velocity(m/s)')legend('ζ=0.02')Gridfigure %绘制绝对加速度反应谱plot(TA,MaxA(1,:),'-.b',TA,MaxA(2,:),'-r',TA,MaxA(3,:),':k') title('Absolute Acceleration')xlabel('Tn(s)')ylabel('absolute acceleration(m/s^2)')legend('ζ=0.02')Grid3 运行的结果得到的反应谱图2 位移反应谱图3 速度反应谱图4 加速度反应谱一、反应谱生成地震波1所取的反应谱为上海市设计反应谱图5 上海市设计反应谱2反应谱取值程序为:%%规范反应谱取值程序参照01年抗震规范function rs_z=r_s_1(pl,zn,ld,cd,fz) %%%pl 圆频率,zn阻尼比,ld烈度,cd场地类型,场地分组fz %%%%烈度选择if ld==6arfmax=0.11;endif ld==7arfmax=0.23;endif ld==8arfmax=0.45;endif ld==9arfmax=0.90;end%%%%场地类别,设计地震分组选择if cd==1if fz==1Tg=0.25;endif fz==2Tg=0.30;endif fz==3Tg=0.35;endendif cd==2if fz==1Tg=0.35;if fz==2Tg=0.40;endif fz==3Tg=0.45;endendif cd==3if fz==1Tg=0.45;endif fz==2Tg=0.55;endif fz==3Tg=0.65;endendif cd==4if fz==1Tg=0.65;endif fz==2Tg=0.75;endif fz==3Tg=0.90;endend%%%%%%%%%ceita=zn; %%%%%阻尼比lmt1=0.02+(0.05-ceita)/8;if lmt1<0lmt1=0;endlmt2=1+(0.05-ceita)/(0.06+1.7*ceita); if lmt2<0.55lmt2=0.55;endsjzs=0.9+(0.05-ceita)/(0.5+5*ceita); %%%%%分段位置 T1 T2 T3T1=0.1;T2=Tg;T_jg=2*pi./pl;%%%% 第一段 0~T1if T_jg<=T1arf_jg=0.45*arfmax+(lmt2*arfmax-0.45*arfmax)/0.1*T_jg;end%%%% 第二段 T1~T2if T1<T_jg&T_jg<=T2arf_jg=lmt2*arfmax;end%%%% 第三段 T2~T3if T2<T_jg&T_jg<=T3arf_jg=((Tg/T_jg)^sjzs)*lmt2*arfmax;end%%%% 第四段 T3~6.0if T3<T_jg&T_jg<=6.0arf_jg=(lmt2*0.2^sjzs-lmt1*(T_jg-5*Tg))*arfmax;end%%%% 第五段 6.0~if 6.0<T_jgarf_jg=(lmt2*0.2^sjzs-lmt1*(6.0-5*Tg))*arfmax;end%%%%%%反应谱值拟加速度值rs_z=arf_jg*9.8;end3生成人造地震波主程序:%%%主程序%%%%%%%%确定需要控制的反应谱Sa(T)(T=T1,...,TM)的坐标点数M,反应谱控制容差rc Tyz=[0.04:0.016:0.1,0.15:0.05:3.0,3.2:0.05:5.0];rc=0.06;nTyz=length(Tyz);ceita=0.035;%%%阻尼比:0.035for i=1:nTyzSyz(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1); %%%%8度,2类场地,第1地震分组end%%%%%% 变换的频率差:2*pi*0.005(可以保证长周期项5s附近有5项三角级数);%%%%频率变化范围 N1=30, 30*0.005*2*pi ;N2=3000, 5000*0.005*2*piplc=2*pi*0.005;pl=30*0.005*2*pi:0.005*2*pi:10000*0.005*2*pi;npl=length(pl);P=0.9; %%%保证率%%%%%%人造地震动持续时间40s,时间间隔:0.02sTd=40;dt=0.02;t=0:0.02:40;nt=length(t);%%%%%%% 衰减包络函数t1=8; %%%%上升段t2=8+24; %%%%%平稳段; 下降段则为40-32=8sc=0.6; %%%%衰减段参数for i=1:ntif t(i)<=t1f(i)=(t(i)/t1)^2;endif t(i)>t1 & t(i)<t2f(i)=1;endif t(i)>=t2f(i)=exp(-c*(t(i)-t2));endend%%%%%%% 反应谱转换功率谱for i=1:nplSw(i)=(2*ceita/(pi*pl(i)))*r_s_1(pl(i),ceita,8,2,1)^2/(-2*log(-1*pi*log(P)/(pl(i)*Td))); Aw(i)=sqrt(4*Sw(i)*plc);end%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfai(i)=rand(1)*2*pi;for j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求,需要时程动力分析%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=1;while max(rcrsp(:))>rc%%%%%循环体函数blxs=Syz./rspa;for xsxs=1:nplif 2*pi/pl(xsxs)<Tyz(1)blxs1(xsxs)=blxs(1);endfor sxsx=1:nTyz-1if (2*pi/pl(xsxs)>=Tyz(sxsx)) & (2*pi/pl(xsxs)<=Tyz(sxsx+1))blxs1(xsxs)=blxs(sxsx)+(blxs(sxsx+1)-blxs(sxsx))*(2*pi/pl(xsxs)-Tyz(sxsx))/(Tyz(sxsx+1)-Tyz(sxsx));endendif 2*pi/pl(xsxs)>Tyz(nTyz)blxs1(xsxs)=blxs(nTyz);endendAw=Aw.*blxs1;%%%%%%%%%%%%%% 合成地震动at=zeros(nt,1);atj=zeros(nt,1);for i=1:nplfor j=1:ntatj(j)=f(j)*Aw(i)*real(exp(sqrt(-1)*(pl(i)*t(j)+fai(i))));endat=at+atj;end%%%%%%% 计算反应谱验证是否满足rc在5%的要求%%%%%%%%%%%% response spectra of callidar%%%%%%% parameterg=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0)); dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i);end%%%%%%% 比较容差for i=1:nTyzrcrsp(i)=abs(rspa(i)-Syz(i))/max(Syz(:));endjsnum=jsnum+1max(rcrsp(:))end%%%%%%% 最终的反应谱与规范谱%%%%%%%%%%%% response spectra of callidar%%%%%%% parameter%% Tjs=0.05:0.01:6;%% nTjs=length(Tjs);g=9.8;m=1;x0=0;v0=0;ww=2*pi./Tyz;%%%%%%%% loadag=at; %%%%%%%修改%%%%%%% solutionfor y=1:nTyzz=0.037;w=ww(y);c=2*z*w;k=w^2;for i=1:nt-1p(i)=-ag(i+1)+ag(i);a0=m\(-ag(i)-c*v0-k*x0);kk=k+(dt^2)\(6*m)+dt\(3*c);pp=p(i)+m*(dt\(6*v0)+3*a0)+c*(3*v0+2\(dt*a0));dx=kk\pp;dv=dt\(3*dx)-3*v0-2\(dt*a0);x1=x0+dx;x0=x1;v1=v0+dv;v0=v1;as(i)=a0;as(i)=as(i)+ag(i);vs(i)=v0;xs(i)=x0;endmaxas(y)=max(as);maxvs(y)=max(vs);maxxs(y)=max(xs);endfor i=1:nTyzrspa(i)=maxas(i)/g;rspa_S(i)=r_s_1(2*pi/Tyz(i),ceita,8,2,1)/g;endsubplot(2,1,1);plot(t,at);subplot(2,1,2);plot(Tyz,rspa);hold on;plot(Tyz,rspa_S);4生成的人造地震波如图所示。

matlab地震加速度时程曲线代码

matlab地震加速度时程曲线代码

matlab地震加速度时程曲线代码
下面是一个示例MATLAB代码,用于生成一个简单的人工地震加速度时程曲线:
```matlab
设置参数
T = 10; % 模拟的总时间,单位为秒
f = 0.2; % 模拟的频率,单位为Hz
A = 0.1; % 振幅,单位为g
t = 0:0.01:T; % 时间向量,从0秒到T秒,间隔为0.01秒
生成地震加速度时程曲线
seismic_acceleration = A * sin(2 * pi * f * t);
绘制地震加速度时程曲线
plot(t, seismic_acceleration)
xlabel('时间 (s)')
ylabel('加速度 (g)')
title('地震加速度时程曲线')
grid on
```
在这个示例中,我们使用了一个正弦波来模拟地震加速度时程曲线。

我们设置了总时间T、频率f和振幅A等参数,并使用MATLAB内置的sin函数来生成加速度时程曲线。

最后,我们使用MATLAB的plot函数将曲线绘制出来。

地震工程作业哈工大 MATLAB程序

地震工程作业哈工大  MATLAB程序

地震工程大作业哈工大 李金平弹性反应谱原创性声明,主程序由本人独立编写完成,支持各种检验。

所选地震动RSN2345CHICHI.AT2 peer 索取号:234510203040506070-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.25时间 (s)加速度 (m /s 2)地震动加速度:位移反应谱1234567891002468101214周期T (s)位移 (m m )matlab 相对位移Seismosignal 相对位移局部放大11.021.041.06 1.081.11.129.29.259.39.359.49.459.59.559.69.659.7周期T (s)位移 (m m )matlab 相对位移Seismosignal 相对位移求比值123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值Seismosignal 位移/MATLAB 位移 比值绝对加速度反应谱0.20.40.60.81 1.2 1.41.61.8200.10.20.30.40.50.60.70.80.91周期T (s)S a (m /s 2)matlab-SaSeismosignal-Sa局部放大-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.250.150.20.250.30.350.40.45周期T (s)S a (m /s 2)matlab-SaSeismosignal-Sa求比值进行比较123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值Seismosignal 加速度/MATLAB 加速度比值速度反应谱1234567891000.010.020.030.040.050.060.070.080.090.1周期T (s)速度 (m /s )matlab-SvSeismosignal-Sv局部放大观察差异00.020.040.060.080.10.125101520x 10-4周期T (s)速度 (m /s )matlab-SvSeismosignal-Sv求比值进行比较。

地震工程作业

地震工程作业

作业1绘制1940 El Centro,N-S分量地震动的绝对加速度、相对速度和相对位移反应谱。

地震动:在PEER Ground Motion Database自行下载经典的1940 El Centro,N-S分量. 要求:在此模板内完成,A4纸打印。

自编程序与软件(Bispec或Seismosigna等)计算反应谱进行对比。

提交自编写程序。

Matlab程序:clearfid = fopen(’E:\Earthquake\El centro。

txt');[Accelerate,count] = fscanf(fid,'%g’); %count 读入的记录的量Accelerate=9。

8*Accelerate’; %单位统一为m和stime=0:0。

02:(count—1)*0.02; %单位sDisplace=zeros(1,count); %相对位移Velocity=zeros(1,count); %相对速度AbsAcce=zeros(1,count);%绝对加速度DampA=[0。

00,0。

02,0。

05]; %三个阻尼比TA=0.0:0。

02:4; %TA=0。

000001:0。

02:4;结构周期Dt=0.02; %地震记录的步长%记录计算得到的反应,MDis为某阻尼时最大相对位移%MVel为某阻尼时最大相对速度,MAcc某阻尼时最大绝对加速度MDis=zeros(3,length(TA));MVel=zeros(3,length(TA));MAcc=zeros(3,length(TA));j=1;for Damp=[0。

00,0.05,0.1]t=1;for T=0。

0:0.02:4Frcy=2*pi/T ;DamFrcy=Frcy*sqrt(1—Damp*Damp);e_t=exp(-Damp*Frcy*Dt);s=sin(DamFrcy*Dt);c=cos(DamFrcy*Dt);A=zeros(2,2);A(1,1)=e_t*(s*Damp/sqrt(1—Damp*Damp)+c);A(1,2)=e_t*s/DamFrcy;A(2,1)=—Frcy*e_t*s/sqrt(1—Damp*Damp);A(2,2)=e_t*(—s*Damp/sqrt(1-Damp*Damp)+c);d_f=(2*Damp^2—1)/(Frcy^2*Dt);d_3t=Damp/(Frcy^3*Dt);B=zeros(2,2);B(1,1)=e_t*((d_f+Damp/Frcy)*s/DamFrcy+(2*d_3t+1/Frcy^2)*c)-2*d_3t;B(1,2)=-e_t*(d_f*s/DamFrcy+2*d_3t*c)—1/Frcy^2+2*d_3t; B(2,1)=e_t*((d_f+Damp/Frcy)*(c—Damp/sqrt(1-Damp^2)*s)-(2*d_3t+1/Frcy^2)*(DamFrcy*s+Damp*Frcy*c))+1/(Frcy^2*Dt);B(2,2)=e_t*(1/(Frcy^2*Dt)*c+s*Damp/(Frcy*DamFrcy*Dt))—1/(Frcy^2*Dt);for i=1:(count—1)Displace(i+1)=A(1,1)*Displace(i)+A(1,2)*Velocity(i)+B(1,1)*Accelerate(i)+B(1,2)*Accelerate(i+1);Velocity(i+1)=A(2,1)*Displace(i)+A(2,2)*V elocity(i)+B(2,1)*Accelerate(i)+B(2,2)*Accelerate(i+1);AbsAcce(i+1)=—2*Damp*Frcy*Velocity(i+1)—Frcy^2*Displace(i+1);endMDis(j,t)=max(abs(Displace));MV el(j,t)=max(abs(Velocity));if T==0.0MAcc(j,t)=max(abs(Accelerate));elseMAcc(j,t)=max(abs(AbsAcce));endDisplace=zeros(1,count);Velocity=zeros(1,count);AbsAcce=zeros(1,count);t=t+1;endj=j+1;endclose allfigure %绘制位移反应谱plot(TA,MDis(1,:),'-b',TA,MDis(2,:),’—r’,TA,MDis(3,:),':k') title(’Displacement')xlabel(’Tn(s)')ylabel(’Displacement(m)’)legend(’ζ=0',’ζ=0.02’,’ζ=0.05’)gridfigure %绘制速度反应谱plot(TA,MVel(1,:),'—b',TA,MVel(2,:),'—r',TA,MVel(3,:),’:k') title(’Velocity')xlabel('Tn(s)’)ylabel(’velocity(m/s)’)legend(’ζ=0','ζ=0.02’,’ζ=0.05’)gridfigure %绘制绝对加速度反应谱plot(TA,MAcc(1,:),’—b',TA,MAcc(2,:),’-r',TA,MAcc(3,:),’:k’) title(’Absolute Acceleration')xlabel(’Tn(s)’)ylabel('absolute acceleration(m/s^2)’)legend('ζ=0’,'ζ=0.02',’ζ=0。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

地震工程大作业哈工大李金平弹性反应谱原创性声明,主程序由本人独立编写完成,支持各种检验。

所选地震动RSN2345CHICHI.AT2 peer索取号:2345:010203040506070 -0.25-0.2-0.15-0.1-0.050.050.10.150.20.25时间 (s)加速度(m/s2)位移反应谱局部放大12345678910周期T (s)位移 (m m )11.021.041.06 1.081.11.129.29.259.39.359.49.459.59.559.69.659.7周期T (s)位移 (m m )求比值123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值绝对加速度反应谱局部放大0.20.40.60.81 1.2 1.41.61.8200.10.20.30.40.50.60.70.80.91周期T (s)S a (m /s 2)-0.25-0.2-0.15-0.1-0.0500.050.10.150.20.250.150.20.250.30.350.40.45周期T (s)S a (m /s 2)求比值进行比较速度反应谱123456789100.940.950.960.970.980.9911.011.021.031.04周期T (s)比值1234567891000.010.020.030.040.050.060.070.080.090.1周期T (s)速度 (m /s )局部放大观察差异求比值进行比较。

00.020.040.060.080.10.12-4周期T (s)速度 (m /s )123456789100.70.80.911.11.21.3周期T (s)比值结论:对比:拟合效果非常好,短周期0s<T<0.2s误差较大,其中相对速度谱的误差较大,接近30%,加速度和位移误差都在3%以内,周期0.2s<T<10s各反应谱的误差都保持在1%以内,精度相同,猜想,两种计算程序应该用的同一种计算方法(newmark法)。

理解:本次计算的反应谱是在给定的地震动下,具有相同阻尼比(5%)不同周期的单自由度结构的线弹性反应幅值,得到的速度、加速度、移幅值随周期变化的三条曲线。

a1(i)=max(abs(a+xg'));v1(i)=max(abs(v));x1(i)=max(abs(x));用法:今后给定一个结构,我们可以计算其周期T1,然后在相应的反应谱图表里面找到对应的谱值如Sa 、Sv、Sd,即为我们所要求得的该结构在指定地震动作用下最大动力反应,将动力分析简化成为静力计算,简单方面。

(弹性范围内)主程序DZZY.mclearclcM=1;%[]fid=fopen('RSN2345CHICHI.txt');%%读取地震动加速度记录xg=9.8*fscanf(fid,'%f');fclose(fid);n=length(xg);F=-M*xg'; %生成地震力for i=1:1000tn(i)=0.01*i;K=2*pi*2*pi/tn(i)/tn(i);lamda=2*pi/tn(i);dt=0.005;t=(0:0.005:(n-1)*0.005)';x0=0;v0=0;a0=0;ksi=0.01*5;DAMPER=2*ksi*lamda*M;[x,v,a]=newmarkb(M,K,DAMPER,1,F,x0,v0,a0,dt,n);a1(i)=max(abs(a+xg'));v1(i)=max(abs(v));x1(i)=max(abs(x));endtest=importdata('a2.txt'); %%读取Seismosignal绝对加速度a2=test(:,2)*9.8;testv=importdata('v2.txt'); %%读取Seismosignal速度v2=testv(:,2);testd=importdata('x2.txt'); %%读取Seismosignal相对位移x2=testd(:,2);tn=0.01:0.01:10;figure (1)plot(tn,x1*1000,'r--')xlabel('周期T (s)')ylabel('位移(mm)')hold onplot(tn,x2*1000,'linewidth',2)legend('matlab相对位移','Seismosignal相对位移')%%figure (2)plot(tn,a1,'r--','linewidth',1)xlabel('周期T (s)')ylabel('Sa (m/s^2)')hold onplot(tn,a2,'k','linewidth',2)legend('matlab-Sa','Seismosignal-Sa')figure (3)plot(tn,v1)xlabel('周期T (s)')ylabel('速度(m/s)')hold onplot(tn,v2,'linewidth',2)legend('matlab-Sv','Seismosignal-Sv')hold offfigure (4)hold onplot(t,xg)legend('地震动加速度')xlabel('时间(s)')ylabel('加速度(m/s^2)')for j=1:1000 %求比值ca(j)=a2(j)/a1(j);cv(j)=v2(j)/v1(j);cx(j)=x2(j)/x1(j);endfigure (6)plot(tn,ca)legend('Seismosignal加速度/MATLAB加速度比值') xlabel('周期T (s)')ylabel('比值')figure (7)plot(tn,cv)legend('Seismosignal速度/MATLAB速度比值')xlabel('周期T (s)')ylabel('比值')figure (8)plot(tn,cx)legend('Seismosignal位移/MATLAB位移比值')xlabel('周期T (s)')ylabel('比值')子程序newmarkb.mfunction [x,v,a]=newmarkb(M,K,C,N,P,x0,v0,a0,dt,RecordLength) % newmark-beta method% obtain the response of the dynamic system% [x,v,a]=newmarkb(M,K,C,N,P,x0,v0,a0,dt,RecordLength) % M - mass matrix% K - stiffness matrix% C - damping matrix% N - DOF% P - loads% x0 - initial displacement% v0 - initial velocity% a0 - initial acceleration% dt - interval% RecordLength - number of sampling pointsx=zeros(N,RecordLength);v=zeros(N,RecordLength);a=zeros(N,RecordLength);x(:,1)=x0;v(:,1)=v0;a(:,1)=a0;deta=0.50;alpha=0.25;a0=1/alpha/dt^2;a1=deta/alpha/dt;a2=1/alpha/dt;a3=1/2/alpha-1;a4=deta/alpha-1;a5=dt*(deta/alpha-2)/2;a6=dt*(1-deta);a7=deta*dt;K_=K+a0*M+a1*C;iK=inv(K_);for i=1:RecordLength-1P_(:,i+1)=P(:,i+1)+M*(a0*x(:,i)+a2*v(:,i)+a3*a(:,i))+C*(a1*x(:,i)+a4* v(:,i)+a5*a(:,i));x(:,i+1)=iK*P_(:,i+1);a(:,i+1)=a0*(x(:,i+1)-x(:,i))-a2*v(:,i)-a3*a(:,i);v(:,i+1)=v(:,i)+a6*a(:,i)+a7*a(:,i+1);end。

相关文档
最新文档