主要内容

直接计算表格和时间表

自从R2023a

您可以直接对表和时间表执行计算,而无需通过索引提取它们的数据。要使用与数组相同的语法执行直接计算,您的表和时间表必须满足以下几个条件:

  • 表和时间表的所有变量都必须具有支持计算的数据类型。金宝app

  • 如果执行的操作只有一个操作数是表或时间表,则另一个操作数必须是数字或逻辑数组。

  • 如果执行的操作中两个操作数都是表或时间表,则它们必须具有兼容的大小。

此示例展示了如何在不索引到表和时间表的情况下执行操作。您还可以调用常见的数学和统计函数,例如总和, |的意思},和cumsum.这个示例还展示了如何在表和时间表的行和变量顺序不同但名称匹配(或者在时间表的情况下,行时间匹配)时对它们执行操作。有关支持的函数和操作的完整列表,以及使用它们的金宝app相关规则,请参见表格和时间表数学规则

在R2023a之前,或者对于混合了数字和非数字变量的表和时间表,请参见表同时具有数值和非数值数据时的计算

将表乘以比例因子

一个简单的算术运算是用一个常数来缩放表。如果所有表变量都支持乘法,则可以扩展表,而无需从中提取数金宝app据。

例如,从CSV(逗号分隔值)文件中读取数据,testScoresNumeric.csv,将其放入表中readtable函数。示例文件包含三个测试中的每个测试的10个测试分数。

testScores = readtable(“testScoresNumeric.csv”
testScores =10×3表Test1 Test2 Test3 _____ _____ _____ 90 87 93 87 85 83 86 85 88 75 80 72 89 86 87 87 96 92 98 78 75 77 91 94 92 86 83 85 79 76 82

考试成绩以100分制为基础。要将其转换为25分制的分数,请将表格乘以0.25.要对表和时间表进行乘法运算,请使用运营商,.*

scaledScores = testScores .* 0.25
scaledScores =10×3表Test1 Test2 Test3 _____ _____ _____ 22.5 21.75 23.25 21.75 21.25 20.75 21.5 21.25 22 18.75 20 18 22.25 21.5 21.75 24 23 24.5 19.5 18.75 19.25 22.75 23.5 23 21.5 20.75 21.25 19.75 19 20.5

如果不同的测试有不同的尺度,那么您可以将表格乘以一个向量。当执行其中一个操作数是表或时间表的操作时,则另一个操作数必须是具有兼容大小的标量、向量、矩阵、表或时间表。

例如,使用行向量根据不同的因素对每个测试进行加权。

weightedScores = testScores .* [0.2 0.3 0.5]
weightedScores =10×3表Test1 Test2 Test3 _____ _____ _____ 18 26.1 46.5 17.4 25.5 41.5 17.2 25.5 44 15 24 36 17.8 25.8 43.5 19.2 27.6 49 15.6 22.5 38.5 18.2 28.2 46 17.2 24.9 42.5 15.8 22.8 41

计算表的和和均值

表还支持常见的数学和统计金宝app函数。例如,计算表中每行加权考试成绩的总和。若要跨行求和,请在调用时指定表的第二维总和

sumScores = sum(weightedScores,2)
sumScores =10×1表Sum ____ 90.6 84.4 86.7 75 87.1 95.8 76.6 92.4 84.6 79.6

要计算每次考试的平均分数,请使用的意思是函数。默认情况下,的意思是沿着变量计算,即表的第一个维度。

meanScores = mean(weightedScores)
meanScores =1×3表Test1 Test2 Test3  _____ _____ _____ 17.14 25.29 42.85

计算时间表累积金额

时间表支持与表格相同的金宝app操作以及数学和统计功能。

例如,加载一个时间表,记录50秒内地震的主震振幅,采样频率为200hz。三个时间表变量对应于由加速度计测量的冲击波的三个方向分量。

负载quakeDataquakeData
quakeData =10001×3的时间表时间东西方南北垂直  _________ ________ __________ ________ 0.005秒5 3 0 0.01秒5 3 0 0.015秒5 2 0 0.02秒5 2 0 0.025秒5 2 0 0.03秒5 2 0 0.035秒5 1 0 0.04秒5 1 0 0.045秒5 1 0 0.05秒5 0 0 0.055秒5 0 0 0.06秒5 0 0 0.065秒5 0 0 0.07秒5 0 0 0.075秒5 0 0 5 0 0⋮0.08秒

计算冲击波的传播速度。首先,把时间表乘以重力加速度。

* quakeData = 0.098
quakeData =10001×3的时间表时间东西方南北垂直  _________ ________ __________ ________ 0.005秒0.015 0.49 - 0.294 0.49 - 0.294 0.01秒0秒0.025 0.49 - 0.196 0.49 - 0.196 0.02秒0秒0.035 0.49 - 0.196 0.49 - 0.196 0.03秒0秒0.045 0.49 - 0.098 0.49 - 0.098 0.04秒0秒0.49 0.098 0.49 0.05秒0 0 0.055秒0.49 0 0 0.49 0.06秒0 0 0 0 0.49 0.07秒0 0 0.49 0.065秒0.075秒0.49 0 0 0.49 0.08秒0 0⋮

然后通过对加速度数据的积分计算传播速度。你可以通过计算每个变量的累积和来近似积分。按时间表的时间步长按比例计算累计金额。的cumsum函数返回与输入具有相同大小和相同行时间的时间表。

speedQuake = (1/200) .* cumsum(地震数据)
speedQuake =10001×3的时间表时间东西方南北垂直  _________ ________ __________ ________ 0.005秒0.015 0.00245 - 0.00147 0.0049 - 0.00294 0.01秒0秒0.025 0.00735 - 0.00392 0.0098 - 0.0049 0.02秒0秒0.035 0.01225 - 0.00588 0.0147 - 0.00686 0.03秒0秒0.045 0.01715 - 0.00735 0.0196 - 0.00784 0.04秒0秒0.055 0.02205 - 0.00833 0.0245 - 0.00833 0.05秒0秒0.065 0.02695 - 0.00833 0.0294 - 0.00833 0.06秒0秒0.03185 0.00833 0.07 0秒0.0343 - 0.00833 0 0 0.075秒0.03675 0.00833 0.0392 0.08秒0.00833 0

计算按比例累积和的平均值。的的意思是函数以单行表的形式返回输出。

meanQuake = mean(speedQuake)
meanQuake =1×3表东西方南北垂直  ________ __________ ________ 4.6145 -11.51 -7.2437

通过减去平均值使按比例累积的总和居中。输出是一个时间表,其中包含每个组件的传播速度。

speedQuake = speedQuake - meanQuake
speedQuake =10001×3的时间表时间东西南北垂直_________ ________ __________ ________ 0.005秒-4.6121 11.511 7.2437 0.01秒-4.6096 11.513 7.2437 0.015秒-4.6072 11.514 7.2437 0.02秒-4.6047 11.515 7.2437 0.025秒-4.6023 11.516 7.2437 0.03秒-4.5998 11.517 7.2437 0.035秒-4.5949 11.518 7.2437 0.045秒- 4.518 7.2437 0.045秒-4.5876 11.518 7.2437 0.06秒-4.5851 11.518 7.2437 0.065秒-4.5827 11.518 7.2437 0.07秒-4.580211.518 7.2437 0.075 SEC -4.5778 11.518 7.2437 0.08 SEC -4.5753 11.518 7.2437

不同顺序的行和变量的操作

表和时间表有变量,变量有名称。表行也可以有行名。时间表上的行总是有行时间。当对两个表或时间表进行操作时,它们的变量和行必须满足以下条件:

  • 两个操作数必须具有相同的大小,或者其中一个必须是单行表。

  • 两个操作数必须具有相同名称的变量。但是,每个操作数中的变量顺序可以不同。

  • 如果两个操作数都是表并且有行名,那么它们的行名必须相同。但是,每个操作数中的行名可以以不同的顺序排列。

  • 如果两个操作数都是时间表,那么它们的行时间必须相同。但是,每个操作数中的行时间可以以不同的顺序排列。

例如,创建两个表并添加它们。这些表有变量名,但没有行名。变量的顺序是一样的。

A = table([1;2],[3;4],VariableNames=[“V1”“V2”])
一个=2×2表V1 v2 __ __ 1 3 2 4
B = table([1;3],[2;4],VariableNames=[“V1”“V2”])
B =2×2表V1 v2 __ __ 1 2 3 4
C = a + b
C =2×2表V1 v2 __ __ 2 5 5 8

现在创建两个具有不同顺序的行名和变量的表。

A = table([1;2],[3;4],VariableNames=[“V1”“V2”], RowNames = [“R1”“R2”])
一个=2×2表V1 v2 __ __ r1 1 3 r2 2 4
B = table([4;2],[3;1],VariableNames=[“V2”“V1”], RowNames = [“R2”“R1”])
B =2×2表V2 v1 __ __ r2 4 3 r1 2 1

添加表。结果是一个表,其中的变量和行与表达式中第一个表的变量和行顺序相同。

C = a + b
C =2×2表V1 v2 __ __ r1 2 5 r2 5 8

类似地,添加两个时间表。结果是一个具有变量和行时间的时间表,其顺序与第一个时间表相同。

=时间表(秒([15;30]),[1,2],[3,4],VariableNames = [“V1”“V2”])
一个=2×2的时间表时间V1 V2 ______ ____ 15秒1 3 30秒2 4
B =时间表(秒([30;15]),[4;2],[3,1],VariableNames = [“V2”“V1”])
B =2×2的时间表时间V2 V1 ______ ____ 30秒4 3 15秒2 1
C = a + b
C =2×2的时间表时间V1 V2 ______ ____ 15秒5 30秒5 8

另请参阅

||

相关的话题