此示例显示了如何分析和可视化地震数据。
文件Quake.mat
包含2008年10月17日的200Hz数据,1989年10月17日Loma Prieta地震在圣克鲁斯山脉。该数据由Charles F. Richter地震实验室,加利福尼亚大学圣克鲁斯大学Charles F. Richter地震实验室提供。
首先加载数据。
负载Quake.谁是E.N.V.
Name Size Bytes Class Attributes 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持续时间
单独的变量可以组织在表格
或时间表
为了更多便利。一种时间表
提供使用时间戳数据的灵活性和功能。创建一个时间表
随着时间和三个加速变量和提供更有意义的变量名称。使用该八行显示前八行头
功能。
varnames = {“东西方”那“南北”那“垂直”};quakeata =时间表(时间,e,n,v,'variablenames', varNames);头(quakeData)
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
通过访问中的变量来探索数据时间表
点加下标。(有关点下标的更多信息,请参见访问表中的数据.)我们选择了“东西方”的振幅和情节
它作为持续时间的函数。
绘图(Quakeata.time,Quakeata.eastwest)标题(“东西加速”的)
将数据按重力加速度缩放,或将表格中的每个变量乘以常数。由于变量类型相同(双
),您可以使用维度名访问所有变量,变量
.请注意,quakeData。变量
提供一种直接方式来修改时间表内的数值。
quakeData。变量= 0.098*quakeData.Variables;
我们对ShockWave的幅度从接近零增加到最大级别的时间区域感兴趣。上面的绘图的目视检查表明,从8到15秒的时间间隔是感兴趣的。为了更好的可视化,我们在所选时间点绘制黑线以引起对该间隔的关注。所有后续计算都将涉及该间隔。
t1 =秒(8)* [1; 1];T2 =秒(15)* [1; 1];抓住在情节(ylim (t1 t2),“k”那“线宽”,2)持有从
创建另一个时间表
使用此间隔的数据。用timerange
选择感兴趣的行。
(8) tr = timerange(秒,秒(15));: dataOfInterest = quakeData (tr);头(dataOfInterest)
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
在三个不同的轴上可视化三个加速度变量。
图形子图(3,1,1)plot(dataofinterest.time,dataofinterest.eastwest)ylabel(“东西”)标题('加速')子图(3,1,2)绘图(dataofinterest.time,dataofinterest.northsouth)ylabel(“南北”)子图(3,1,3)绘图(dataofinterest.time,dataofinterest.vertical)ylabel(“垂直”的)
为显示有关数据的统计信息,我们使用总结
功能。
总结(dataOfInterest)
Rowtimes:时间:1400x1持续时间值:Min 8秒中位数11.498 SEC MAX 14.995 SEC SIMESTEP 0.005秒秒变量:Eastwest:1400x1双倍值:Min -255.09中位数-0.098 MAX 244.51 Northsouth:1400x1双值:Min -198.55中位数1.078 Max 204.33垂直:1400x1双重值:min -157.88中位数0.98最大134.46
有关数据的附加统计信息可以使用varfun.
这对于将函数应用到表或时间表中的每个变量是很有用的。要应用的函数被传递到varfun.
作为函数句柄。下面我们应用的意思是
函数对所有三个变量进行处理,并以表格的形式输出结果,因为计算时间均值后,时间就没有意义了。
mn = varfun (@mean dataOfInterest,'输出格式'那“表”的)
Mn =1×3表MEAN_ESTWEST CALE_NORTHSOUTH MEAN_VERTRACACH ________________________________________________________________________________________________________________________________________________________________________________________________________________________0.9338 -0.10276 -0.52542
为了确定冲击波的传播速度,我们将加速度积分一次。我们使用沿时间变量的累积和来得到波前的速度。
edot = (1/200) * cumsum (dataOfInterest.EastWest);Edot = Edot -均值(Edot);
下面我们在所有三个变量上执行集成以计算速度。创建功能是方便的,并将其应用于变量时间表
与varfun.
.在此示例中,我们将该文件的函数包含在此文件末尾并命名为它velFun
.
韦尔= varfun (@velFun dataOfInterest);(或者)
ans =8×3时间表时间velFun_EastWest velFun_NorthSouth velFun_Vertical _________ _______________ _________________ _______________ 8秒-0.56831 0.44642 1.8173 -0.56831 0.45769 1.834 8.01 8.005 -0.5786 0.46945 1.832 -0.59869 0.48121 1.8114 8.02 8.015 -0.62907 0.49346 1.7727 -0.66925 0.5062 1.7154 8.03 8.025 -0.71972 0.51894 1.6664 8.035SEC -0.76088 0.53217 1.6257
应用相同的函数velFun
来确定位置。
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;
下面,我们绘制出感兴趣的时间间隔内速度和位置的三个分量。
figure subplot(2,1,1) plot(vel.Time,vel.Variables) legend(quakeData.Properties.VariableNames,“位置”那'西北')标题('速度') subplot(2,1,2) plot(vel.Time,pos.Variables) legend(quakeData.Properties.VariableNames,“位置”那'西北')标题(“位置”的)
利用分量值可以在二维或三维中绘制轨迹。下面我们将展示可视化该数据的不同方法。
从二维投影开始。这是第一个具有少数时间值注释的。
图绘图(POS.Northsouth,POS.vertical)XLabel(“南北”) ylabel (“垂直”的)%选择位置和标签nt = ceil((max(max.time) - min(pos.time))/ 6);idx = find(修复(pos.time / nt)==(pos.time / nt))';文本(POS.Northsouth(IDX),POS.vertical(IDX),CHAR(POS.TIME(IDX)))
用Plotmatrix.
可视化所有变量之间的散点图和对角上每个变量的直方图的网格。输出变量斧头
,表示网格中的每个轴,并可用于标识要使用哪些轴进行标记包含
和ylabel.
.
figure [S,Ax] = plotmatrix(pos.Variables);为了xlabel(Ax(end,ii),varNames{ii}) ylabel(Ax(ii,1),varNames{ii})结束
绘制轨迹的三维视图,并在每个第十个位置点绘制点。点之间的间距表示速度。
步骤= 10;图Plot3(Pos.northsouth,Pos.Estwest,POS.Vertical,'r')举行在plot3 (pos.NorthSouth(1:步骤:结束),pos.EastWest(1:步骤:结束),pos.Vertical(1:步骤:结束),'。')举行从盒子在轴紧包含(“南北”) ylabel (“东西”) zlabel (“垂直”)标题(“位置”的)
函数定义如下。
函数y = (1/200)*cumsum(x);Y = Y -均值(Y)结束
时间表
|头
|总结
|varfun.
|持续时间
|秒
|timerange