WHEN I RUN THIS CODE IT AGAIN AND AGAIN GIVE THIS PROBLEM THAT IS 'Index exceeds matrix dimensions.'

n=('enter the number of rows');
m=('enter the number of columns');
Pmin=[100 50 100];
Pmax=[600 200 400];
PopM=[];
for i = 1:n
for j = 1:m
PopM(i,j) = Pmin(j) + rand * (Pmax(j)-Pmin(j));
end
end
PopM
??? Index exceeds matrix dimensions.

Respuestas (1)

You are declaring PopM as
PopM=[];
Then your are telling matlab to acces element i and j of this matrix, but this matrix as the size of 0x0.
PopM(1,1)
??? Index exceeds matrix dimensions.
Instead preallocate with
zeros(n,m)
You will also get this error if m>3 in your code, since
numel(Pmin) is 3
numel(Pmax) is 3

2 comentarios

The assigment of PopM(1,1) is correct and works without problems, although a proper pre-allocation would be more efficient. The problem will appear for m>3 only, when the sizes of Pmin or Pmax are exceeded.
Yes , you are correct was too quick there =)
Indeed you are not accessing PopM but instead reallocating it every iteration, good you caught that one!

La pregunta está cerrada.

Etiquetas

Preguntada:

el 17 de Ag. de 2013

Cerrada:

el 20 de Ag. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by