Matlab multiplied iterator for array index inside

2019-06-02 07:24发布

问题:

Is it possible to slice 3'rd line (tt)? This code is simplified, but the problem is similar. I am using multiplied iterator (3*i) in array index, however it doesn't work. Maybe it is possible to change it somehow.

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;

Thanks :)

回答1:

To be a sliced output variable, tt must be indexed using literally only the loop variable i, and other constant terms (including :). Perhaps you can make tt rectangular, and assign a whole column at a time, and then reshape later, something like this:

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