Azzera filtri
Azzera filtri

strings and numbers for a numeric array name

4 visualizzazioni (ultimi 30 giorni)
I am using 6 numeric arrays in my project, their names are: block1, block2 , block3 , block4, block5 , block6
i execute the same function for all of them, i need to make this in a for loop, but i failed to index the elements of the arrays, i tried this:
for i=1:6
h = ['block' int2str(i)];
eval(h)
end
for row=1:BRows
for col=1:BCols
if (h(row,col) >= 316 && h(row,col) <= 20)
h(row,col) = 0;
elseif (h(row,col) >= 21 && h(row,col) <= 40)
h(row,col) = 1;
end
end
Would you help me please
  3 Commenti
yasmine
yasmine il 16 Dic 2011
i tried it but this error occurred:
??? Error: File: fg6.m Line: 86 Column: 40
The expression to the left of the equals sign is not a valid target for an assignment.
any other suggestions?
Jan
Jan il 16 Dic 2011
The problem is, that your "h" is *not* the contents of block1, but the string 'block1'. Avoid EVAL.

Accedi per commentare.

Risposta accettata

the cyclist
the cyclist il 15 Dic 2011
Rather than doing it like that, I strong suggest you used cell arrays, as described in Doug's answer here: http://www.mathworks.com/matlabcentral/answers/143-how-do-i-make-a-series-of-variables-a1-a2-a3-a10
  1 Commento
yasmine
yasmine il 16 Dic 2011
actually i have a problem with cell arrays in my project, i can't use them

Accedi per commentare.

Più risposte (1)

Jan
Jan il 16 Dic 2011
Please explain why you cannot use cell arrays. "eval([block, int2str(i)])" is such an ugly approach, prone to errors and it has remarkable drawbacks for the processing speed in Matlab. I cannot imaging why "h=block{i}" should be worse. Embedding an index in the name of a variable is not smart. Better use an index as index.
Btw. you do not want to do "eval(h)", but:
eval(['h = block', int2str(i)]);
As you see: The EVAL approach is prone to errors!
  6 Commenti
yasmine
yasmine il 30 Dic 2011
knowing that i want to keep record of all blocks ( not to overwrite on old data)
Jan
Jan il 30 Dic 2011
@yasmine: Please open a new thread for a new question.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by