创建一个循环来操作表

时间:2016-10-13 18:36:28

标签: matlab

我有一个目标温度和实际温度的表格(表1):

   Time    Target    actual    diffrence
   ____    ______    ______    _________

   1       40        40.2      0.2      
   2       40          41        1      
   3       40        40.3      0.3     

我想创建一个只包含差异< = 0.5。

的行的表

所以目标看起来应该是这样的(table2):

   Time    Target    actual
   ____    ______    ______

   1       40        40.2
   3       40        40.3

我不知道如何创建一个解决我问题的循环。 我试图在for循环中创建一个if循环:

for n = 1:3
    if difference(n) <= 0.5
        table2 = table(table1.Time(n), table1.Target(n), table1.actual(n))
    end
end

但是当我执行时,我的table3只包含第三行。

   3       40        40.3

有人可以帮我创建循环吗? (也许我的循环总是覆盖table3并且只保存最后一次迭代?)

1 个答案:

答案 0 :(得分:1)

您对问题的分析是正确的。循环中的语句只是将table2的值设置为符合条件的最新行。

根本不需要使用循环。根据{{​​1}}列创建一个布尔掩码:

difference

然后,您可以使用掩码作为索引选择整个表的子集:

mask = table1{:, 4} > 0.5;

您甚至可以将两条线合并为一条:

table2 = table1{mask, 1:3};