如何根据MATLAB中的某些条件向表的最后一列添加值?

时间:2018-10-05 09:48:55

标签: matlab for-loop if-statement display

我有一个29736 x 6的表,称为table_fault_test_data。它有6列,分别命名为wind_direction,wind_speed,air_temperature,air_pressure,density_hubheight和Fault_Condition。我要做的是根据“ Fault_Condition”(最后一个表的列中的值)来标记数据,具体取决于其他列中的值。

我想进行以下检查(例如)

  1. 如果wind_direction值(column_1)低于0.0040且高于359.9940,则将与表的相应行相对应的第6列条目标记为1,否则标记为0。
  2. 对整个表格执行此操作。同样,对其他人进行此检查 如air_temperature,air_pressure等。我知道,如果不是 将用于这些检查。但是,我真的很困惑我 可以对整个表格执行此操作,并将相应的值添加到 第6列(可能使用循环或其他内容)。

对此有任何帮助     高度赞赏。非常感谢!

编辑: 进一步说明:我有一个29736 x 6的表,名为table_fault_test_data。我想根据以下条件将值添加到表的第6列:-

for i = 1:29736 % Iterating over the whole table row by row
    if(1st column value <x  | 1st column value > y)
         % Add 0 to the Corresponding element of 6 th column i.e. table_fault_test_data(i,6)
    elseif (2nd column value <x  | 2nd column value > y)
         % Add 0 to the Corresponding element of 6 th column i.e. table_fault_test_data(i,6)
    elseif ... do this for other cases as well
    else
         % Add 1 to the Corresponding element of 6 th column i.e. table_fault_test_data(i,6)

这是我要求的本质。我希望这有助于更好地理解这个问题。

1 个答案:

答案 0 :(得分:2)

您可以使用逻辑索引,表也支持逻辑索引(如果可能,应避免for循环)。例如,假设您要实现第一个条件,并且还假设x和y已知;同样,让我们​​假设您的表名为 t

logicalIndecesFirstCondition = t{:,1} < x | t{:,2} >y

,然后您可以使用逻辑索引引用验证此条件的行(请参考logical indexing

例如:

t{logicalIndecesFirstCondition  , 6} = t{logicalIndecesFirstCondition  , 6} + 1.0; 

对于逻辑条件为真的行,这将在第六列添加1.0。