matlab运算好慢啊~是我写的算法有问题?

Discussion in 'Julia / MATLAB / SAS' started by ch3coohqb, Feb 28, 2013.

  1. 25w行行情数据~运算出资金曲线
    总共7组参数进行优化
    花了40多分钟才完成

    我的策略是非常非常简单的
    这种运算速度正常吗?
    是我写的回测程序太复杂还是数据量太大的问题?

    运行的时候matlab一点也不卡~CPU占用也只有20%左右
    有无办法让matlab占用其他80%的cpu把速度提高?
     
  2. 尽量失量化,少循环,预分配变量空间。
     
  3. 谢谢楼上的回复

    matlab不是可以处理大数据吗?
    25万行交易行情数据~应该不算非常大的数据吧?

    我想请教处理过几十万行以上时间序列数据的朋友几个问题
    matlab运算慢有当然可能是我写法有问题也有可能软件本身运算速度只能这样
    问题1
    处理过几十万行以上时间序列数据的朋友~你们的速度是否跟我一样?
    问题2
    如果你们的速度一般可以比我快的话~你们是用什么办法提升运算速度的?我看了些matlab处理bigdata的东西~预分配变量空间~少矩阵运算~我都试过了~但还是觉得速度慢~matlab只占用了我20%左右的CPU~有无办法让matlab占用我100%的CPU全速跑运算??
     
  4. 一般百万级的数据也没问题。估计你是循环嵌套多了。试试parfor替代for? 但这种线性的手段解决不了指数增长的问题。要么从改进算法入手,要么把循环部分用C实现。
     
  5. matlab 基于java的,不可能很快的
     
  6. 用matlab profile功能,找出耗时最大的函数。至于具体什么原因只有靠写代码的人自己分析。解铃还须系铃人。
     
  7. 我运行过一个模型,花了近8个小时。40分钟算正常的。
     
  8. 我系统回测,tick数据2w条约0.6s,按照你的20w约6s,即一个参数组合是6s,总时间是多少看你组合参数多少。当然,我用的c#。按照以前做过的测试,c#比matlab快10~100倍以上,你估算下看是否快这么多。
     
  9. 环境是基于JAVA的,但是运算部分不是。

     
  10. 其实matlab运行效率还凑合吧,不像很多人想象那么差。

    多从算法上找原因。不要用cells之类的复杂类型;矩阵操作多用系统函数变换实现,尽量不要自己写循环处理。等等方法,自己开profile研究一下,一般不难搞定。
    实在要求效率就转c++,不过运算效率上去了,估计研究效率会降下来,总的来看还未必划算,除非模型稳定了。

    数据量如果真的太大,就考虑引入数据库,我用mysql觉得基本够用。

    另外还有个思路,如果你的算法前后关联不大,而仅仅是要处理的数据大,那可以引入分布式处理。
     
  11. 找出速度瓶颈啊。matlab其实不算慢,现在电脑速度很快了,估计你的算法有问题。
    找出耗时最大的函数,然后看看能不能用其他函数替代,如果实在不行就用c重写优化那些速度最慢的。
     
  12. Matlab不是所有组件都是原生多线程
    看你的磁盘读写log

    根据我的经验,你的速度太慢了,肯定你哪里搞得不对
     
    yangyutj likes this.
  13. 估计你的for嵌套太多了。。。试试看,cuda加速呢?