作者smarter1004 (请拒绝看各新闻台)
看板MATLAB
标题Re: [讨论] 如何不理输出就继续执行接下来的程式码?
时间Mon Oct 14 17:49:33 2013
各位高手大家好
我想我还是换个方法问会比较清楚
我有两个函数f及g
它们的输入及输出皆为1 by 1的double
n为一个正整数
程式码概略如下:
a = zeros(1,n);
b = zeros(1,n);
a(1) = pi;
for i = 2:n %回圈1
a(i) = f(a(i-1));
end
for i = 1:n %回圈2
b(i) = g(a(i));
end
可以看到回圈2中b的计算并不需要全部的a(i)都算出来就能开始算了
但如果我把b的计算写进回圈1中 那下一个a的计算就要等b算出来才行
但f跟g所需的计算时间都相当久
而且都不会吃掉cpu全部的核心
所以我才在找寻方法让f跟g可以不用等待
用尽cpu所有的力气去跑
谢谢大家帮忙
※ 引述《smarter1004 (请拒绝看各新闻台)》之铭言:
: 各位高手大家好
: 现在我有两个函数f及g
: a(1) = f(a(0)),
: a(i+1) = f(a(i)),
: b(i+1) = g(a(i)),
: 其中i = 1,2,3,...
: 可以看到f需要的变数只有a(i)
: 而b(i)只是g输出的变数没有被拿来做其它事
: 我的问题如下
: g需要a才能算b
: 但我不知道f什麽时候才会算出a来
: 如果我在程式码中写了算出a(i)後叫g来算b(i+1)
: 那f就只能等b(i+1)算出来後再算a(i+1)
: 可是如前所提 f的变数并不需要b
: 也就是会让f白等
: 有什麽办法让matlab算出a後让电脑用其它核心去算b而f的部份继续呢?
: 我的matlab没有平行运算工具箱
: 谢谢大家帮忙
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.140.200
1F:推 kurt28:你的b用向量化的方式去算不知道会不会比较快? 10/14 20:03