用fft就能画时间
数据的
频谱图。\x0d\x0a比如说你下载的
地震波是一个传感器在一段时间内得到的数据,那么这组数据应该是个向量,比如说设成向量x, 假设这组数据的采样频率是Fs,数据x的长度为L,设其频谱为X。Matlab程序为:\x0d\x0aX=fft(x)\x0d\x0aX_Mag=abs(X)\x0d\x0af=0:Fs/L:Fs-Fs/L\x0d\x0aplot(f, X_Mag)\x0d\x0a\x0d\x0a这里X_Mag为频谱幅度,用plot画出频谱幅值图。f为对应的频率,画出的频谱从0到Fs, 由于得到的数据是离散的采样数据,所以频率是对称的,你只需要分析频率从0到Fs/2的频率就行了。在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')
matlab输入ELcentro地震波读取txt文件并将每一个加速度赋值给变量程序(取前15秒):x=0:1:750n=length(x)
data=load('C:\Users\PC\Desktop\\EL centro.txt')
for i=1:n
p(i)=data(i,:)
end
评论列表(0条)