一、出现问题
在matlab中使用多线程计算时,parfor循环的子循环中如果使用了一些外部定义的变量,有可能会出现报错“变量的有效索引在parfor中受限制”,如下所示:
二、解决方案
可以在parfor中定义一个临时变量,在经过子循环之后,在parfor循环结束之前赋值给外部的变量,具体步骤如下:
- 定义外部矩阵A(普通定义即可)
- parfor循环开始
- 定义矩阵A的一个子矩阵
- 在子循环中对子矩阵赋值
- 结束子循环
- 将子矩阵值复制到矩阵A
- 结束parfor循环
这样就可以避免上边那个错误了