楼主: O(∩_∩)O~!
4061 17

[问答] 请问我的matlab程序哪里有问题? [推广有奖]

11
O(∩_∩)O~! 发表于 2011-5-10 13:47:54
10# O(∩_∩)O~!

刚才去围观了下epoh老师的帖子,真的是牛人加好人啊!
值得敬佩!

12
O(∩_∩)O~! 发表于 2011-5-10 14:02:50
再请教一个问题,下面形式的代码,总是在p的下面出现红色的波浪线,鼠标停留后显示
”The variable 'p' appears to change size on every loop interation(within a script).Consider preallocating for speed. “

  1. for i=1:999
  2.     p(i)=i/1000;
  3. end   
复制代码


这个应该就是可以提高程序效率的地方吧?

但是我不知道怎么改?

还请指教!

非常感谢!

13
tulipsliu 在职认证  发表于 2011-5-10 16:52:50
10# O(∩_∩)O~! 是啊;尤其是重复调用的功能函数;
MATLAB给了一个基础的平台,在上面实现很多功能,得自己再开发。
一些算法,很多人在不同行业的工作用到的算法不同,却是经常重复调用的;
这样的就可以写成一个专用的函数;;

也有修改函数,修改别人的也是一种乐趣。呵呵,在面向对象的思想里(OOA),将一些以前的,更基础的改造,也叫“重载”。

今天看了下一个 garch 工具箱的函数,它的 核密度 函数估计,里面就有语法错误,今天下午给它修改了;

还有就是lesage的空间计量经济学工具箱,五一节和朋友讨论时,发现 lratios() 这个统计检验函数里有一个matlab函数,由于lesage这个程序有的有10年的时间了,MathWorks公司的一些基础函数更改,导致刚才说的 lratios()函数无法调用,修改一个程序里的一个系统函数就可以了。

呵呵。
劳动经济学

14
tulipsliu 在职认证  发表于 2011-5-10 16:59:51
12# O(∩_∩)O~! 这个我无法估计;
通常这类是因为你的矩阵大小在变;

比如我有一个 M*N 的矩阵,我预先已经知道它的大小,MATLAB 是一个消耗内存来提高效率的软件。
它可以预定义;

Data=zeros(m,n);
然后后面的for循环这类,就会快很多。

其实更深入的,matlab还有一个叫 剖析器 的功能,就是可以检验程序里什么地方最消耗时间,然后再找办法。这个比较复杂。



就你上面的程序来看

pi=zeros(999);
for i=1:999
    pi=i/1000;
end

这样会比较好点;实际上MATLAB所谓提升效率是相对的,比如现在有的计算机是多核的,有的有4核,内存大。刚才的预定义,是很消耗内存的,内存小的电脑,反而受其害。

如果你的是高性能的多核计算机,你的程序这么消耗时间,可以用
open matlabpool
来打开并行计算方式,这样会提高MATLAB的计算性能,不过很伤CPU,一般我的只有两个核的电脑,这样跑过后,退出MATLAB后电脑反应就很慢了。这是相对的。
劳动经济学

15
O(∩_∩)O~! 发表于 2011-5-18 15:17:44
14# tulipsliu

谢谢您!

还想请教您一个问题,我只想要循环语句for N=5:5:20,N=5、10、15、20这4个结果,但是按照上面的程序运行出来后,对应N从5到20,后面需要的每个变量都有结果,但是是0,这个可以修改吗?

16
tulipsliu 在职认证  发表于 2011-5-18 17:38:08
15# O(∩_∩)O~! 不太明白你这个问题。不知道你说的是那一个变量到最后没结果,只是等于0.
劳动经济学

17
tulipsliu 在职认证  发表于 2011-5-19 11:21:06
15# O(∩_∩)O~! 我想起来前不久帮朋友运行程序,最后的结果也全是 0
呵呵。
你的也是这样吗?
那你在你的大循环语句的最后
for N=5:5:20
,,,,,,,,,,,,,,,,,,,,,,,,,,,,
end

format long % 调整数据显示格式


你这样试试,因为数值太小,一般显示不了。用long的长格式。
好像默认的不是 format short,就是 format blank。

你添加那句到你的循环语句的最后吧。
我也不知道要添加在哪里,因为我认为你的要在屏幕显示的变量在 for 循环后,如果不是,你也可以放在程序的首句
第一句就是

format long

就可以了。
劳动经济学

18
tulipsliu 在职认证  发表于 2011-5-23 16:16:46
1# O(∩_∩)O~! 朋友,你是做金融建模的吗?还有,这个是MCMC算法吗?我和其他朋友在讨论MS-GARCH模型,你的程序自己写的,虽然效率来说,运行时间长,我其他朋友写的也是这样。不知道可以加你Q不,大家一起讨论。我的号是:280201722.
劳动经济学

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 20:19