2015-03-26 9 views
2

Предположим, у меня есть два массива SURFPoints, которые хранятся в surfP1 и surfP2. Есть ли способ объединить эти два массива вместе в целом? Я видел там функцию cat, но я не нашел, как ее использовать в документации.Объединить два массива SURFPoints в Matlab

ответ

1

Точно верно. Используйте 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 работы стека столбцы вместе ... по какой-то причине, но он получает работу.

+0

Спасибо! Очень полезно! – SimaGuanxing

+0

@JoeWang - Мое удовольствие! Удачи! – rayryeng