У меня есть матрица IntialMat
, и у меня есть структура с N другими матрицами. Я хочу иметь индексы матриц, которые пересекаются хотя бы с одним элементом матрицы IntialMat
. Как я могу сделать это в MATLAB?
Например, InitialMat=[2, 5, 88; 55 63 4] И структура MatriciesStor имеет N матриц:
Mat1=[1, 55,12; 45 78]
Mat2=[12, 14; 42,165]
Mat3=[2,18,11; 13,80; 10, 99]
.
.
.
.
.
.
MatN=[4, 77;63,20]
Результат, который я хочу, - это значение пересечения и имя матрицы или ее индекса: значение 2 с Mat3 (индекс 3) Значение 4 с MatN (индекс N)
@CrisLuengo, да, функция intersect дает результат, но когда я ее использую, мне приходится указывать все мои матрицы в функции, но я не могу этого сделать, так как число матриц N очень велико (например, 3000).
@PranavHosangadi, потому что я обязан работать со СТАНДАРТНЫМ НАБОРОМ ДАННЫХ, имеющим такое большое количество матриц.
Вы можете перебирать матрицы следующим образом:
IntialMat = randi(100, 3);
for i = 1:10
MatriciesStor{i} = randi(100, 3);
end
% Now compare all Mats against IntialMat
for i = 1:10
inter = intersect(MatriciesStor{i},IntialMat);
if ~isempty(inter)
fprintf("\nMatrix %d has intersections: %d", i, inter);
end
end
fprintf("\n");
который дает что-то вроде:
Matrix 1 has intersections: 18
Matrix 2 has intersections: 46
Matrix 3 has intersections: 18 38
Matrix 7 has intersections: 79
Matrix 8 has intersections: 51
Matrix 9 has intersections: 75
Вы пробовали функцию
intersect
? Пожалуйста, покажите нам, где у вас есть трудности, это облегчит написание ответа для вас.