Я не думаю, что есть хорошее встроенное решение для этой ситуации.Лучшее, что я могу придумать на данный момент, - это создать два вложенных цикла для сравнения всех строк каждого массива ячеек, используя функцию ISEQUAL для сравнения:
index = zeros(size(cell1,1),1);
for row1 = 1:size(cell1,1)
for row2 = 1:size(cell2,1)
if isequal(cell1(row1,:),cell2(row2,[1 3]))
index(row1) = row2;
break
end
end
end
Результатом будет набор индексов совпадений в векторе N-by-1 index
, где N - количество строк в cell1
.Если строка cell1
не может быть сопоставлена с данными в любой строке cell2
, то соответствующая запись index
будет равна 0. Индексы совпадений в index
сохранят исходный порядок данныхв cell1
.Кроме того, этот код игнорирует несколько совпадений в cell2
, возвращая только индекс первого найденного совпадения и прерывая внутренний цикл (что потенциально сократит количество необходимых итераций).
Теперь вы можете индексировать в cell2
для получения данных, соответствующих содержанию cell1
:
>> cell2(index,:)
ans =
'netincome' [1751] [1]
'equity' [3501] [2]