Matlab - возвращает только те строки матрицы "A", которые не содержат некоторые значения матрицы "B"
Как вернуть только те строки матрицы "A", которые не содержат некоторые значения (эти значения являются массивом "B")?
A = {'A1', 5 'P01,P02,P03,P04,P07';
'A2' 7, 'P07,P10';
'A3' 8, 'P07,P09';
'A4' 8, 'P10,P11'};
B = { 'P07'; 'P10'; 'P11'};
Мне нужно только вернуть:
'A1' ( P01,P02,P03,P04 not exist in B)
'A3' (P09 not exist in B)
Заранее спасибо за помощь
1 ответ
Решение
Так как вы имеете дело с массивами ячеек странной формы и некоторыми странными строковыми операциями, я не знаю, как решить это чисто одним утверждением. Вы можете попробовать следующий цикл:
R = {};
for i = 1 : size(A, 1)
test = strsplit(A{i, 3}, ',');
for j = 1 : length(test)
if nnz(strcmp(B, test{j})) == 0
R = [R; A(i, 1)];
break;
end
end
end
Результат:
R =
'A1'
'A3'
Конечно, эти вычисления можно было бы сделать намного быстрее, если бы можно было работать только с числовыми компонентами каждой строки поиска в реальной матрице, а не с массивами строк.