Azzera filtri
Azzera filtri

Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

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

3 visualizzazioni (ultimi 30 giorni)
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.

Risposte (1)

kjetil87
kjetil87 il 17 Ago 2013
Modificato: kjetil87 il 17 Ago 2013
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 Commenti
Jan
Jan il 17 Ago 2013
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.
kjetil87
kjetil87 il 18 Ago 2013
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!

Questa domanda è chiusa.

Community Treasure Hunt

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

Start Hunting!

Translated by