Why MEX 由于matlab的迭代器不太给力,Mathworks建议大家尽量将程序向量化。但是我们有时候需要使用for 循环,这时可以自己编写c代码再编译成mex文件。这样就可以在matlab中调用。同时以后的c模块也可以通过编写mex文件来与matlab交互。 Hello world! 下面是一段简单的c代码,可以把它保存为helloworld.c, 然后在matlab执行 mex helloworld.c 编译。然后运行 helloworld() //You can include any C libraries that you normally use #include "math.  阅读全文...

在matlab的内置函数中已经给出了sort和min,max的实现,都是比较高效的。但是我们常常遇到这种情况,就是要在一个矩阵或者是向量中取出最大的前k个元素,k一般相比元素的总数量要小很多。 这个时候,一般最朴素的做法是先用sort排序,然后取前n个,这样得到的时间复杂度为O(n*log(n))。假设向量有n个元素。 或者当k远远小于n时,可以考虑重复调用max或min,这时的复杂度为O(k*n)。 Bruno Luong 给出了一个用部分快速排序实现的算法,复杂度为  阅读全文...