Arrays parfor切片内数组索引的Matlab乘法迭代器

Arrays parfor切片内数组索引的Matlab乘法迭代器,arrays,matlab,indexing,iterator,parfor,Arrays,Matlab,Indexing,Iterator,Parfor,有可能切3’线(tt)吗?这段代码被简化了,但问题是类似的。我在数组索引中使用乘法迭代器(3*I),但它不起作用。也许有可能以某种方式改变它 parfor i = 1 : NE tmp = i * [1, -1; -1, 1]; tt(3*i-1:3*i+1) = tmp([3,2,4]); pp(i) = tmp(1,1,i); end; 谢谢:)要成为一个变量,tt必须仅使用循环变量i和其他常量项(包

有可能切3’线(tt)吗?这段代码被简化了,但问题是类似的。我在数组索引中使用乘法迭代器(3*I),但它不起作用。也许有可能以某种方式改变它

parfor i = 1 : NE      
   tmp = i * [1, -1; -1, 1];                 
   tt(3*i-1:3*i+1) = tmp([3,2,4]);          
   pp(i) = tmp(1,1,i);   
end;
谢谢:)

要成为一个变量,
tt
必须仅使用循环变量
i
和其他常量项(包括
)进行索引。也许您可以将
tt
设置为矩形,一次指定一个完整的列,然后稍后再进行重塑,类似这样:

tt = zeros(3, 10);  
parfor ii = 1:10
  tt(:, ii) = [ii; ii; ii];
end
tt = reshape(tt, 1, numel(tt));

不清楚你想做什么。此代码不能作为简单的
for
循环,因为在第4行中,您试图访问
tmp
的第三维,但
tmp
只是一个2x2矩阵。您能否将代码修复为在标准
for
循环中工作?然后,也许我们可以看到您正在尝试做什么,并帮助您使用
parfor
。对不起,这是“使函数更容易”的错误。:)应该是pp()=tmp(i),谢谢。你的建议成功了。但是,奇怪的是,不可能在索引中乘以迭代器。不幸的是,这是PARFOR的限制之一-为了让它知道如何切片数据,必须直接使用循环变量。