[英]How to speed up 'sort' function in Matlab?
我使用的是 Matlab 的內置排序 function:
[temp, Idx] = sort(M,2);
我想要 M 的每一行的排序索引,這是一個大小> 50k 的矩陣。
我努力搜索,但沒有找到任何東西。如果您有任何意見,將不勝感激!
為了了解您有多大的改進空間,我建議在 C 中編寫一個測試程序,並使用 qsort 或 C++ 和用戶排序,並在 7000 個大小為 7000 的輸入(或 Matlab 中的任何設置)上仔細計時.
我將給你我的估計:可能 Matlab 的排序運行(在正確的矢量化代碼上,比如你的)和 C++ 一樣快,你只是看到運行需要 O(n^2 log n) 的算法的效果. 在 Matlab 的營銷材料中報道說,它的排序 function 比 C 的 qsort 快,但對它持保留態度。
加速這種排序的最佳方法是獲得一台速度更快的計算機。 它也會加快其他一切。 :)
事實是,您很少能加快對 sort 之類的單個調用的速度。 MATLAB 已經在以一種有效的方式做到這一點,在內部使用優化的代碼。 (重讀 carlosdc 答案。)有時您可以得到提升的是用 MATLAB 本身編寫的工具。
所以,你可以做什么? 除了購買那台新計算機之外,您還可以查看您的整體代碼。 那種大小的單一種類從來都不是那么大的問題。 但是一遍又一遍地做那種事情的原因是。 仔細考慮代碼,是否可以更改流程或避免多次重復排序。 算法改變通常是比你能得到的微小改進更大的改進來源,即使你可以改進這種方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.