У меня есть структура 1x1 (ЭЭГ) с 42 полями. Одно из этих полей называется событием и является структурой 1x180 с 13 различными полями, некоторые из которых являются строками и некоторыми числовыми значениями.Удалить определенные строки из структуры
4-поле EEG.event является типа и он содержит строки (т.е. «Преображенского», «пред», «до», «тд», «ро», «PD»).
Я хотел бы сохранить только те строки структуры, которые содержат «preo» в столбце EEG.event.type.
Моя конечная цель - создать матрицу со всеми столбцами из структуры EEG.event и только строки с preo в EEG.event.type и другие столбцы из других переменных.
До сих пор я пытался:
S = struct2table(EEG.event);
и правильно возвращает 180x13 таблицу. Однако я не смог выбрать только строки с 'preo' в типа. Я пробовал:
A= S(S.type=='preo', :);
, и это дает мне ошибку:
Undefined operator '==' for input arguments of type 'cell'.
Я также попытался:
array(strcmp(S(:, 4), 'preo'), :) = [];
, и это дает мне эту ошибку:
Deletion requires an existing variable.
Тогда Я подумал, что, может быть, я должен был преобразовать tabl e в матрицу, чтобы напрямую удалять строки из матрицы. Я пробовал:
B = cell2mat(S);
но он возвращает эту ошибку:
Error using cell2mat (line 42)
You cannot subscript a table using only one subscript. Table subscripting requires both row and variable subscripts.
Любое предложение или наконечник можно только приветствовать, потому что я не знаю, как продолжить.
списокПримера что у меня есть (только 18 строк здесь):
13 1 201011 'preo' 2502 201 1 1 'y' 'h' 13 13.9230000000000 13
14 1 201011 'pred' 2684 201 1 1 'y' 'h' 14 14.1049999960000 14
15 1 201012 'to' 2707 201 1 2 'y' 'h' 15 14.1280000000000 15
16 1 201012 'td' 2993 201 1 2 'y' 'h' 16 14.4140000000000 16
17 1 201013 'po' 3019 201 1 3 'y' 'h' 17 14.4400000000000 17
18 1 201013 'pd' 3383 201 1 3 'y' 'h' 18 14.8040000000000 18
55 2 61011 'preo' 8213 61 1 1 'y' 'h' 55 53.9000000000000 55
56 2 61011 'pred' 8522 61 1 1 'y' 'h' 56 54.2089999850000 56
57 2 61012 'to' 8547 61 1 2 'y' 'h' 57 54.2340000000000 57
58 2 61012 'td' 8834 61 1 2 'y' 'h' 58 54.5210000000000 58
59 2 61013 'po' 8858 61 1 3 'y' 'h' 59 54.5450000000000 59
60 2 61013 'pd' 9091 61 1 3 'y' 'h' 60 54.7780000000000 60
85 3 124011 'preo' 13924 124 1 1 'y' 'h' 85 82.4550000000000 85
86 3 124011 'pred' 14159 124 1 1 'y' 'h' 86 82.6899999990000 86
87 3 124012 'to' 14181 124 1 2 'y' 'h' 87 82.7120000000000 87
88 3 124012 'td' 14448 124 1 2 'y' 'h' 88 82.9790000000000 88
89 3 124013 'po' 14470 124 1 3 'y' 'h' 89 83.0010000000000 89
90 3 124013 'pd' 14713 124 1 3 'y' 'h' 90 83.2440000000000 90
Примера список, который я хотел бы иметь (от 18 строк выше):
13 1 201011 'preo' 2502 201 1 1 'y' 'h' 13 13.9230000000000 13
55 2 61011 'preo' 8213 61 1 1 'y' 'h' 55 53.9000000000000 55
85 3 124011 'preo' 13924 124 1 1 'y' 'h' 85 82.4550000000000 85
dunno В какой список вы используете этот фильтр, можете ли вы предоставить конкретный пример. – Abra001
@ Agawa001 Я просто добавил список того, что у меня есть, и то, что хотел бы получить. – dede
Вы читали документы MATLAB под названием [_Создать таблицу из подмножества более крупной таблицы_] (http://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-table.html#bt1552e-1) ? Было бы полезно, если бы вы могли сохранить свою «таблицу» в файл '.mat', загрузить ее где-нибудь и разместить ссылку на нее здесь ...В противном случае я не вижу, как мы можем воспроизвести вашу проблему. –