2015-06-15 3 views
0

У меня есть два вектора, один из которых сохраняет размер ширины набора изображений, а другой - высоту этих наборов изображений.двухмерные уникальные значения в Matlab

Я хочу использовать эти значения в виде двумерных векторов [ширина по высоте] и хранить их в матрице. Первая строка, например, сохраняет ширину и вторую строку, высоты.

Возможно ли использовать функцию unique() в matlab для возврата двухмерных уникальных значений? Я имею в виду, что значения могут повторяться в одном измерении, но два измерения не могут быть похожими на другой вектор?

Как это сделать в Matlab?

Один пример: при использовании следующей матрицы каждый столбец имеет двумерный вектор. Я хочу двухмерные уникальные векторы. Значения могут повторяться в одном измерении, но не в обоих.

Что у меня есть:

[1,2,3,1; 
4,5,6,4] 

Я хочу, чтобы в качестве выходного сигнала:

[1,2,3; 
4,5,6] 
+0

Если я правильно понял ваш вопрос, да. его возможный с 'unique' с опцией' rows' –

+1

дает нам некоторую двухрядную матрицу и желаемую окончательную, потому что я не могу ее хорошо понять. – SamuelNLP

ответ

4

См документы для unique.

Предполагая widths и heights являются векторы-столбцы,

[C,ia,ic] = unique([widths, heights],'rows') 

В противоположность этому, если widths и heights являются векторы-строки,

[C,ia,ic] = unique([widths; heights].','rows') 
+0

Это решение не работает. Предположим, что у меня есть матрица [1,2,3,1; 4,5,6,4], каждый столбец содержит двумерные векторы (высота, ширина). С предложенным решением вектор (1,4) появится дважды. – mad

+3

Поскольку он ищет уникальные строки, вам нужно транспонировать свою матрицу. 'unique ([1,2,3,1; 4,5,6,4] ',' rows ')' будет работать. – zeeMonkeez

+0

Теперь это работает, спасибо – mad

Смежные вопросы