У меня есть гетерогенная ячейка, содержащая в основном числа, но один столбец символов. Я хотел бы идентифицировать те строки, в которых значение в столбце символов равно определенной строке, 'X'
. Мой массив выглядит примерно так:Логическое индексирование символов в гетерогенной ячейке в MATLAB
array_name = { [0] [2] 'X' ;
[4] [1] 'X' ;
[9] [7] 'A' ;
[9] [1] 'X' ;
[4] [4] 'B'};
Мой вопрос два раза:
(1) С помощью array_name == 'X'
не возвращает логический вектор Я бы ожидать при его использовании на числовой массив, как Я делаю это?
(2) Как я могу создать новый массив, состоящий только из тех строк, которые удовлетворяют условие, что значение в столбце символьного быть равно 'X'
, так что мой результат будет выглядеть следующим образом:
new_array = { [0] [2] 'X' ;
[4] [1] 'X' ;
[9] [1] 'X'};
Меня интересует только (1), поскольку я полагаю, что это необходимо для (2).
Любые советы приветствуются!
О, хороший ответ, ха-ха, я определенно переусердствовал. +1 –
И я тоже. Большое вам спасибо. Не могли бы вы вкратце объяснить в комментарии, почему это работает при использовании скобок вокруг имени массива, и это происходит не тогда, когда вы просто используете «array_name {:, 3} == 'X'"? – Constantin
'array_name {:, 3}' - список, разделенный запятыми, сравнение с использованием 'eq' невозможно. Вы должны использовать '[]' для получения массива. Вы можете найти объяснение о списках, разделенных запятыми: http://www.mathworks.com/help/matlab/matlab_prog/comma-separated-lists.html?s_tid=doc_12b – Daniel