Предположим, у меня есть два массива SURFPoints, которые хранятся в surfP1
и surfP2
. Есть ли способ объединить эти два массива вместе в целом? Я видел там функцию cat
, но я не нашел, как ее использовать в документации.Объединить два массива SURFPoints в Matlab
ответ
Точно верно. Используйте cat
. Вот пример использования изображения из инструментария обработки изображений. Я использую изображение человека камеры, а также поверну его на 55 градусов. Мы будем обнаруживать точки SURF для обоих изображений, а затем сложить их вместе:
im = imread('cameraman.tif');
im2 = imrotate(im, 55);
surfP1 = detectSURFFeatures(im);
surfP2 = detectSURFFeatures(im2);
surfFinal = cat(2, surfP1, surfP2);
points_final
сложит две точки структуры процентных массивов в единый массив структур. Первый параметр, равный cat
, - это размер, который вы хотите использовать, чтобы объединить то, что вам нужно. В нашем случае мы выбираем 2, поскольку мы хотим конкатенировать по горизонтали. Это очень своеобразно, потому что surfP1
и surfP2
- оба массива структуры, которые ориентированы на столбцы, поэтому N x 1
, а не 1 x N
, и поэтому, если вы хотите попытаться соединить столбцы вместе, вы бы подумали использовать , но я получил сообщение об ошибке при попытке для этого, указав, что требуется горизонтальная конкатенация. Это может быть связано с тем, что массивы представляют собой структуры, а не числовые массивы, но я не могу сказать точно.
В любом случае, что следует за параметром 2, все массивы или матрицы, которые вы хотите объединить вместе. В этом случае это были бы массивы с двумя процентными точечными структурами. Кроме того, вы также можете использовать vertcat
сделать то же самое:
surfFinal = vertcat(surfP1, surfP2);
Здесь, используя vertcat
работы стека столбцы вместе ... по какой-то причине, но он получает работу.
Спасибо! Очень полезно! – SimaGuanxing
@JoeWang - Мое удовольствие! Удачи! – rayryeng