Чтобы получить записи в каждой строке mainData
, совпадающие с записями в finalAns
(на основе последних двух столбцов mainData
и первых двух столбцов finalAns
), и получить их в в том же порядке, в котором они отображаются в finalAns
и добавлен последний столбец finalAns
, вы можете сделать это:
>> temp = cell2mat(mainData(:,2:3));
>> [isThere,index] = ismember(finalAns(:,1:2),temp,'rows');
>> output = [mainData(index(isThere),:) num2cell(finalAns(isThere,3))]
output =
'GM' [101] [2] [0.5000]
'GE' [403] [1] [0.6000]
Выходными данными является массив ячеек размером 2 на 4, каждое значение которого находится в отдельной ячейке. Если вы хотите, чтобы последние три столбца были собраны в векторе, вы можете заменить вычисление output
выше следующим:
>> temp = [temp(index(isThere),:) finalAns(isThere,3)];
>> output = [mainData(index(isThere),1) num2cell(temp,2)]
output =
'GM' [1x3 double]
'GE' [1x3 double]
Обратите внимание, что теперь у вас есть массив ячеек 2 на 2, где ячейки во втором столбце содержат двойные массивы 1 на 3.