Как добавить значения в последний столбец таблицы на основе определенных условий в MATLAB? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть таблица 29736 x 6, которая называется table_fault_test_data.Он имеет 6 столбцов с именами wind_direction, wind_speed, air_temperam, air_pressure, density_hubheight и Fault_Condition соответственно.Я хочу пометить данные в Fault_Condition (последний столбец таблицы со значением 1 или 0, в зависимости от значений в других столбцах.

Я хотел бы выполнить следующие проверки (Например:)

  1. Если значение wind_direction (column_1) меньше 0,0040 и выше 359,9940, пометьте 6-ую запись в столбце, соответствующую соответствующей строке таблицы, как 1, иначе метку как 0.
  2. Сделайте это для всей таблицы. Аналогично, сделайте эту проверку для других, таких как air_temperam, air_pressure и т. Д. Я знаю, что if-else будет использоваться для этих проверок. Но я действительно запутался в том, как я могусделайте это для всей таблицы и добавьте соответствующее значение в 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 голосов
/ 05 октября 2018

Вы можете использовать логическое индексирование, которое поддерживается также для таблиц (для циклов следует избегать, если это возможно).Например, предположим, что вы хотите реализовать первое условие, а также предположим, что ваши x и y известны;Кроме того, давайте предположим, что ваша таблица называется t

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

, а затем вы можете ссылаться на строки, которые проверяют это условие, используя логическую индексацию (см. логическая индексация

Например:

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

Это добавит 1,0 к 6-му столбцу для строк, для которых выполняется логическое условие

...