【MATLAB基础】并行计算parfor中的变量

 parfor中的slice有特定的使用约束

>> a=zeros(100,1);
parfor ii = 1:50
    a(2*ii)=1;
end

以上代码运行出错,信息如下:

Error: Unable to classify the variable 'a' in the body of the parfor-loop. For more information, see Parallel for Loops in MATLAB, "Solve Variable Classification Issues in parfor-Loops". 

根据帮助文件

Ensure That parfor-Loop Variables Are Consecutive Increasing Integers

需要确保循环变量是连续增加的整数。有三个条件:

(1)整数;

(2)连续;

(3)增加;

以下三种均为错误情况:

parfor i = 0:0.2:1      % not integers不是整数
parfor j = 1:2:11       % not consecutive不是连续增加
parfor k = 12:-1:1      % not increasing不增加

对于非整数情况,可以通过如下方法更改

iValues = 0:0.2:1;
parfor idx = 1:numel(iValues)
    i = iValues(idx);
    ...
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlabparfor语句可以用于并行计算for循环。它可以在多个处理器核心上同时执行循环语句,从而提高程序的运行效率。parfor语句在数值计算和科学计算领域有广泛的应用,例如求解线性方程组、图像处理、数值积分、矩阵乘法和求解偏微分方程等。使用parfor语句可以大幅度提高程序的运行效率,减少计算时间和计算资源的消耗。 当使用parfor语句时,需要注意几个事项。首先,循环变量parfor语句有一些限制和使用方法,例如循环变量不能被修改并且不能作为索引使用。其次,在并行处理,循环变量的值不是按顺序执行的,所以在编写程序时要考虑到这一点。最后,如果程序在并行处理过程出现问题导致断,重新运行程序可能会很麻烦,因为已经计算过的部分可能需要重新计算。因此,在使用parfor语句时,需要考虑到这些注意事项。 总之,parfor语句是Matlab用于并行计算for循环的重要功能,通过并行处理可以提高程序的运行效率,特别是在处理大规模问题时。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [基于parfor的matlab并行处理机制学习和研究](https://blog.csdn.net/Simuworld/article/details/131465885)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [matlab并行parfor 宏观串行](https://download.csdn.net/download/xiaoxiaolishan/7992859)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值