24小时热门版块排行榜    

查看: 368  |  回复: 2

tg2010

金虫 (小有名气)

[求助] 求教把程序改成并行之后,循环里面的数组怎么输出出来。已有1人参与

parfor k=1 : n
sonic = data1((1+(k-1)*2400)2400*k));
signal1 = (sonic(1:2400))./100;
Ar = abs(fftshift(fft(signal1,2400)));
[maxb,ind] = max(b);
Tp(k) = 2*pi/x(ind);
E = @(x)(x^2+1);
for i=1:length(x2)
    Ex(i,k) = E(x2(i));
    Exm0(i,k) = Ex(i,k)-m0(k);
    signal2(i) = Exm0(i,k);
end
epsilong(:,k) = Ar;
end

程序结构大致如上。运行速度是有大幅提升,但是工作库里输出的只有Tp(k)这样的一维数组,所有二维以上的数组影子都没了。parfor里的数组是要怎么传输出来的?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lilitu

木虫 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
xzhdty: 金币+1 2014-10-02 22:22:28
要在这个循环之外建立一个变量来存结果,所有的slavers在循环内的运算结果都要传递到这个master上
2楼2014-10-02 21:45:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tg2010

金虫 (小有名气)

引用回帖:
2楼: Originally posted by lilitu at 2014-10-02 21:45:33
要在这个循环之外建立一个变量来存结果,所有的slavers在循环内的运算结果都要传递到这个master上

请问是不是类似这样
A = zeros(3,3);
parfor i=1:5
A = zeros(3,3);
...
end

像这样循环内外都定义一遍还是没反应还是空集。若是只是循环外定义则parfor报错。只是循环内定义库里直接就不产生这个变量。
3楼2014-10-03 12:49:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tg2010 的主题更新
信息提示
请填处理意见