c++如何实现matlab中的sort函数

3 篇文章 0 订阅

matlab中的sort函数可以返回排序后的值以及索引值,但是应为在c++中一个函数只能返回一个结果,所以用sort函数实现返回排序后的值,用sortIdx函数返回排序后的索引值。

opencv提供了排序函数: sort和sorIdx , 其中sortIdx可以获取排序后的序号,比较方便;

sort原型:

Sorts each row or each column of a matrix.
C++: void sort(InputArray src, OutputArray dst, int flags)
 
Python: cv2.sort(src, flags[, dst]) → dst
 
Parameters:
src – Source single-channel array.
dst – Destination array of the same size and type as src .
flags –
Operation flags, a combination of the following values:
CV_SORT_EVERY_ROW Each matrix row is sorted independently.
CV_SORT_EVERY_COLUMN Each matrix column is sorted independently. This flag and the previous one are mutually exclusive.
CV_SORT_ASCENDING Each matrix row is sorted in the ascending order.
CV_SORT_DESCENDING Each matrix row is sorted in the descending order. This flag and the previous one are also mutually exclusive.
The function sort sorts each matrix row or each matrix column in ascending or descending order. So you should pass two operation flags to get desired behaviour. If you want to sort matrix rows or columns lexicographically, you can use STL std::sort generic function with the proper comparison predicate.

sortIdx函数原型:

C++: void sortIdx(InputArray src, OutputArray dst, int flags)
 
Python: cv2.sortIdx(src, flags[, dst]) → dst
<br>Parameters:
src – Source single-channel array.
dst – Destination integer array of the same size as src .
flags –
Operation flags that could be a combination of the following values:
CV_SORT_EVERY_ROW Each matrix row is sorted independently.
CV_SORT_EVERY_COLUMN Each matrix column is sorted independently. This flag and the previous one are mutually exclusive.
CV_SORT_ASCENDING Each matrix row is sorted in the ascending order.
CV_SORT_DESCENDING Each matrix row is sorted in the descending order. This flag and the previous one are also mutually exclusive.

这两个函数都支持矩阵的行、列排序;

以下是例子:

cv::Mat  IndexMat;      //序号矩阵
cv::sortIdx(matchMat,IndexMat,CV_SORT_ASCENDING + CV_SORT_EVERY_COLUMN);    //matchMat为原始数据矩阵

sort同上,这里就不详细说明了,使用方法请见:www.opencv.org.cn/opencvdoc/2.3.2/html/modules/core/doc/operations_on_arrays.html?highlight=sort#cv2.sort

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值