这个例子展示了如何分析和可视化地震数据。
该文件quake.mat
包含了1989年10月17日圣克鲁斯山脉洛马普列塔地震的200Hz数据。这些数据由加州大学圣克鲁兹分校查尔斯·f·里克特地震实验室的乔尔·耶林提供。
从加载数据开始。
负载地震谁env
名称大小字节类级别E 10001x1 80008 Double N 10001x1 80008 Double V 10001x1 80008 Double
在工作区中,有三个变量,其中包含位于UC Santa Cruz的自然科学建筑中的加速度计的时间痕迹。加速度计记录了地震波的主冲击幅度。变量n
,e
,v
请参阅由仪器测量的三个方向分量,该方向部件平行于故障对齐,其N方向指向萨克拉门托方向。该数据是未校正仪器响应的。
创建一个变量,时间
,包含以200Hz采样的时间戳,其长度与其他向量相同。用。表示正确的单位秒
函数和乘法,以实现Hz () 采样率。这导致了一个
持续时间
可用于代表经过的时间的变量。
时间=(1/200)*秒(1:长度(e))';谁时间
名称大小字节类属性时间10001x1 80010持续时间
单独的变量可以组织在一个桌子
或时间表
更多的便利。一个时间表
提供使用带有时间戳的数据的灵活性和功能。创建一个时间表
带有时间和三个加速变量,并提供更有意义的变量名。控件显示前8行头
函数。
varNames = {'东西','Northsouth','垂直的'};地震数据=时间表(时间,e, n, v,“VariableNames”,varnames);头(quaketata)
ans =.8×3的时间表时间东西南北垂直_________ ________ __________ ________ 0.005 sec 5 3 0 0.015 sec 5 2 0 0.02 sec 5 2 0 0.025 sec 5 2 0 0.03 sec 5 2 0 0.035 sec 5 1 0 0.04 sec 5 1 0
的变量来探索数据时间表
点加下标。(有关点下标的更多信息,请参见访问表中的数据)。我们选择了“东西方”的振幅和情节
它是持续时间的函数。
情节(quakeData.Time quakeData.EastWest)标题(“东西加速”)
通过重力加速度缩放数据,或者通过常量乘以表中的每个变量。由于变量都是相同类型的(双倍的
),您可以使用维度名称访问所有变量,变量
.请注意,Quakeata.variables.
提供一种在时间表内修改数值的直接方法。
quakeata.variables = 0.098 * quakeata.variables;
我们感兴趣的是激波振幅开始从接近零的水平增加到最大水平的时间区域。目视上述图表可以看出,8到15秒的时间间隔是有趣的。为了更好地形象化,我们在选定的时间点上画黑线,将注意力吸引到那个时间间隔上。所有后续计算都将涉及这个区间。
t1 =秒(8)* (1,1);t2 =秒(15)* (1,1);持有在绘图([T1 T2],Ylim,'K','行宽', 2)离开
创造另一个时间表
在这个区间内的数据。使用时间范围
选择感兴趣的行。
tr = timerange(秒(8),秒(15));dataofinterest = quakeata(tr,:);头(dataof interest)
ans =.8×3的时间表时间东西方南北垂直_________ ________ __________ ________ 8秒-0.098 2.254 5.88 8.005秒0 2.254 3.332 8.01秒-2.058 2.352 -0.392 8.015秒-4.018 2.352 -4.116 8.02秒-6.076 2.45 -7.742 8.025秒-8.036 2.548 -11.466 8.03秒 -10.094 2.548 -9.8 8.035秒-8.232 2.646 -8.134
在三个单独的轴上可视化三个加速度变量。
图subplot(3,1,1) plot(dataOfInterest.Time,dataOfInterest.EastWest) ylabel('东西') 标题(“加速”) subplot(3,1,2) plot(dataOfInterest.Time,dataOfInterest.NorthSouth) ylabel('南北') subplot(3,1,3) plot(dataOfInterest.Time,dataOfInterest.Vertical) ylabel('垂直的')
为显示有关数据的统计信息,我们使用总结
函数。
摘要(DataOf Interrest)
RowTimes: Time: 1400x1 duration值:Min 8 sec中位数11.498 sec Max 14.995 sec TimeStep 0.005 sec变量:EastWest: 1400x1 double值:Min -255.09中位数-0.098 Max 244.51 NorthSouth: 1400x1 double值:Min -198.55中位数1.078 Max 204.33 Vertical: 1400x1 double值:Min -157.88中位数0.98 Max 134.46
可以使用关于数据的额外统计信息来计算varfun
。这对于在表或时间表中将函数应用于每个变量是有用的。申请的功能已通过varfun
作为函数句柄。下面我们应用的意思是
函数到所有三个变量,并以表格的格式输出结果,因为计算时间方式后的时间不有意义。
mn = varfun(@均值,dataofinterest,“OutputFormat”,'桌子')
mn =1×3表mean_EastWest mean_NorthSouth mean_Vertical _____________ _______________ _____________ 0.9338 -0.10276 -0.52542
要识别ShockWave的传播速度,我们将加速度整合一次。我们沿着时间变量使用累积总和来获得波前的速度。
Edot =(1/200)* Cumsum(DataOfInterest.eastwest);编辑=编辑 - 平均值(编辑);
下面我们对所有三个变量进行积分来计算速度。中创建函数并将其应用于变量是很方便的时间表
与varfun
.在本例中,我们在该文件的末尾包含了该函数并为其命名弗姆森
.
vel = varfun(@velfun,dataofinterest);头(vel)
ans =.8×3的时间表时间velFun_EastWest velFun_NorthSouth velFun_Vertical _________ _______________ _________________ _______________ 8秒-0.56831 0.44642 1.8173 8.005秒-0.56831 0.45769 1.834 8.01秒-0.5786 0.46945 1.832 8.015秒-0.59869 0.48121 1.8114 8.02秒-0.62907 0.49346 1.7727 8.025秒-0.66925 0.5062 1.7154 8.03秒-0.71972 0.51894 1.66648.035秒-0.76088 0.53217 1.6257
应用相同的功能弗姆森
来确定位置。
pos = varfun (@velFun,韦尔);头(pos)
ans =.8×3的时间表时间velFun_velFun_EastWest velFun_velFun_NorthSouth velFun_velFun_Vertical _________ ______________________ ________________________ ______________________ 8秒2.1189 -2.1793 -3.0821 2.1161 -2.177 -3.0729 8.01 8.005 2.1132 -2.1746 -3.0638 2.1102 -2.1722 -3.0547 8.02 8.015 2.107 -2.1698 -3.0458 2.1037 -2.1672 -3.0373 8.025秒8.03 SEC 2.1001 -2.1646 -3.0289 8.035 SEC 2.0963 -2.162 -3.0208
注意时间表中的变量名是如何由varfun
包括所用函数的名称。跟踪在原始数据上执行的操作是有用的。使用点表示法将变量名称调整回原始值。
pos.Properties.VariableNames = varNames;
下面我们绘制了感兴趣的时间间隔的速度和位置的3个组分。
图形子图(2,1,1)plot(vel.time,vel.variables)图例(quakeata.properties.variablenames,“位置”,“西北”) 标题(“速度”)子图(2,1,2)plot(vel.time,pos.variables)图例(quakeata.properties.variablenames,“位置”,“西北”) 标题(“位置”)
轨迹可以通过使用组件值在2D或3D中绘制。在下文中,我们将显示可视化此数据的不同方式。
从二维投影开始。下面是第一个注释了一些时间值的示例。
图绘制(pos.NorthSouth pos.Vertical)包含('南北')ylabel('垂直的')%选择位置和标签nt = max(pos.Time) - min(pos.Time))/6; / / pos.Time = max(pos.Time) - min(pos.Time) /6if (fix(pos.Time/nt) == (pos.Time/nt))';文本(pos.NorthSouth (idx) pos.Vertical (idx), char (pos.Time (idx)))
使用plotmatrix
为了可视化所有变量的散点图网格,并在对角线上的每个变量的直方图。输出变量斧头
,表示网格中的每个轴,并且可用于识别要使用的轴XLabel.
和ylabel
.
figure [S,Ax] = plotmatrix(pos.Variables);为II = 1:长度(varnames)xlabel(ax(end,ii),varnames {ii})ylabel(ax(ii,1),varnames {ii})结束
绘制轨迹的三维视图,并在每十分之一处绘制一个点。点之间的间距表示速度。
一步= 10;图plot3 (pos.NorthSouth pos.EastWest pos.Vertical,“r”) 抓住在plot3 (pos.NorthSouth(1:步骤:结束),pos.EastWest(1:步骤:结束),pos.Vertical(1:步骤:结束),“。”) 抓住离开盒子在轴紧的Xlabel('南北')ylabel('东西')Zlabel('垂直的') 标题(“位置”)
函数在下面定义。
功能y = velfun(x)y =(1/200)* cumsum(x);Y = Y - 平均值(Y);结束