matlab parfor 变量,使用parfor的广播变量

作者在尝试利用Matlab的parfor循环进行并行计算时,遇到全局变量更新问题。他们寻求解决方案,可能涉及如何在并行环境下正确操作广播变量,以及是否有其他高效方法替代。实例代码展示了他们在处理原子类型转换过程中的困境。
摘要由CSDN通过智能技术生成

我现在试图在Matlab中进行并行计算,并希望使用parfor循环来提高效率。问题是我可以保证每个循环都是相互独立的,但我最终需要更新一个全局变量(也许在Matlab中称为广播变量),当我想给它赋值时有一个问题说它不能被分类。如果我仍然想在这个Matlab中做到这一点,我该如何解决这个问题,或者有什么其他方式可以尝试提高效率?使用parfor的广播变量

的代码是这样的:

Atoms(1:nOfAtomsInTwoDim,:)=TwoDimAtoms;

odd_type=TwoDimAtoms;

even_type=TwoDimAtoms;

even_type(:,1)=TwoDimAtoms(:,1)+LatticeSpacing/2;

even_type(:,2)=TwoDimAtoms(:,2)+LatticeSpacing/2;

parfor i=2:1:nOflayers+1

temp_type=TwoDimAtoms;

if mod(i,2)

temp_type=odd_type;

temp_type(:,3)=TwoDimAtoms(:,3)+(i-1)*LatticeSpacing/2;

else

temp_type=even_type;

temp_type(:,3)=TwoDimAtoms(:,3)+(i-1)*LatticeSpacing/2;

end

iBegin=(i-1)*nOfAtomsInTwoDim+1;

iEnd=i*nOfAtomsInTwoDim;

Atoms(iBegin,iEnd,:)=temp_type;

end

+0

最后一行有一个错字,是这个问题吗? '原子(iBegin,iEnd,:)'应该是'Atoms(iBegin:iEnd,:)'(第一个''应该是':') –

+0

哪一个是你的全局变量?没有我们可以运行的代码示例,很难理解你的问题。 –

+0

PetrH你是对的,我其实并不是很熟悉Matlab ......但是我认为它在我改变它之后仍然不起作用:( –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值