strings and numbers for a numeric array name
古いコメントを表示
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 件のコメント
Walter Roberson
2011 年 12 月 15 日
No h(row,col) can possibly be simultaneously >= 316 but <= 20.
Meanwhile, consider:
h(h >= 21 & h <= 40) = 1;
yasmine
2011 年 12 月 16 日
Jan
2011 年 12 月 16 日
The problem is, that your "h" is *not* the contents of block1, but the string 'block1'. Avoid EVAL.
採用された回答
その他の回答 (1 件)
Jan
2011 年 12 月 16 日
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 件のコメント
yasmine
2011 年 12 月 16 日
Jan
2011 年 12 月 16 日
block{1} = rand(2,2);
block{2] = rand{3,4};
disp(block{1}) % <== as you see "block{1}" is a numeric array!
Consider the curly braces. With round parenthesis "block(1)" you get a scalar cell.
Has my Do Not Eval been impressive enough?
the cyclist
2011 年 12 月 16 日
Here is an example of code that uses numeric array embedded in a cell array, and then makes histograms from them.
block = cell(2,2);
for i = 1:4
block{i} = randn(1000,1);
end
figure
for i=1:4
subplot(2,2,i), hist(block{i},25)
end
Think of a cell array as a container than can hold many other type of MATLAB objects. When you use curly brackets, you are accessing the contents of the container, which in this case is numeric arrays.
yasmine
2011 年 12 月 30 日
yasmine
2011 年 12 月 30 日
Jan
2011 年 12 月 30 日
@yasmine: Please open a new thread for a new question.
カテゴリ
ヘルプ センター および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!