I intend to write a value, say, 90, in many times, say 15 (actually want it in 1440 times) inside a parfor loop.
The first approach using for loop generated this error - 'valid indices for 'a' are restricted in PARFOR loop'
parfor n=1:35
a=zeros(:,15); % the variable is indexed but not sliced
for k=1:15
a(:,k)= 100
end
end
the second approach (vectorization)
parfor n = 1:35
a=zeros(:,15); % the variable is indexed but not sliced
a(:,1:15)=90;
end
generated same error and so PARFOR loop cannot run due to the way variable 'a' is used.
I want to actually slice the variable 'a' not just indexed so as to avoid unnecessary communication overhead, please how do I go about this? Kindly assist.
Felix

 Réponse acceptée

Edric Ellis
Edric Ellis le 16 Jan 2012

0 votes

To slice the variable 'a', you need to use a subscript list that contains:
  1. One instance of the loop variable
  2. Other subscripts which are either constant literal values or ':'
So, for example, in the following case, 'a' will be a sliced output:
parfor n = 1:35
tmp = 90 * ones(1, 15);
a(n, :) = tmp;
end
which creates 'a' as a 35x15 matrix with each element containing the value 90.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 16 Jan 2012

0 votes

zeros(:,15) is not valid syntax to call the zeros() function.

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by