Поскольку ваш метод генерации result_Matrix (назовите его RM
) является немного описательным, метод также будет немного сложным. Сначала вы должны проанализировать Marix 2 (я назову это M2
). Вы можете использовать простой цикл:
i=1;
M2_indexes=[1];
for idx=1:size(M2)
if M2(idx)~=M2(M2_indexes(i))
M2_indexes=[M2_indexes, idx];
i=i+1;
end
end
M2_indexes=[M2_indexes,(size(M2,1)+1)];
Теперь ваша программа знает, что значение изменяется на [1 5 8]
, а последний индекс в диапазоне матрицы - [11]
. Пришло время итеративно перебрать M1
. Это очень похоже на предыдущий шаг:
MR = [];
for idx=1:size(M1)
for idy=1:size(M2_indexes,2)
if M2(M2_indexes(idy))==M1(idx,2)
MR=[MR; M2(M2_indexes(idy):(M2_indexes(idy+1)-1),1:4)];
end
end
end
И результат, как вы описали:
MR =
918 2 12 13
918 2 9 13
918 2 6 13
918 2 3 1
842 2 3 8
842 3 12 9
842 3 9 3
918 2 12 13
918 2 9 13
918 2 6 13
918 2 3 1
40 3 9 6
40 3 6 9
40 3 3 5
842 2 3 8
842 3 12 9
842 3 9 3