How can i create an array whose length indirectly depends on parfor loop's index?
10 views (last 30 days)
Show older comments
As the title says, i want to ask if there is an elegant way to create an array whose length is indirectly related to the index of a parfor loop in a certain way.
The following code lines give me the error "size input must be integers". I'm sure the error is due to me trying to create the zero array K whose length is N (which, unfortunately, indirectly depends on the corresponding index of the parfor loop).
lambda = [10, 70, 20, 15];
parfor i = 1:length(lambda)
N = lambda(i);
K = zeros([1,N]);
end
0 Comments
Accepted Answer
Edric Ellis
on 30 Nov 2017
Strange, that code works as written for me, so I'm not sure what's going wrong for you. But even so, I don't think it would do what you wanted - the variable K is a parfor temporary variable. A temporary variable is one which is fully assigned to on each iteration of the loop, and its value is not available after the loop completes.
output = [];
parfor idx = 1:3
newValues = (1:idx) .* (10 .^ (idx-1));
output = [output, newValues];
end
disp(output)
which results in
1 10 20 100 200 300
Reduction variables like output above allow you to accumulate values - often through concatenation (as shown above), or addition.
2 Comments
More Answers (0)
See Also
Categories
Find more on Parallel for-Loops (parfor) in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!