Remove for-loop by using cellfun
이전 댓글 표시
var_name = {'A','B','C'};
for i=1:length(var_name)
eval([cell2mat(var_names(i)) '=zeros(10,1);'])
end
How can I do?
Thanks in advance
댓글 수: 3
Approaches involving dynamic variable naming are almost always flawed. I think that you/we should work upstream and change the approach so you don't have to use EVAL and dynamic names. What are you trying to achieve overall, and where/how are these A, B, and C variables defined?
Christophe
2014년 7월 3일
If all "variables" contents are 10x1 numeric arrays, it would be much more natural/efficient (and simpler) to build an array of zeros. For 3 "variables", for example:
nData = 3 ;
data = zeros( 10, nData ) ;
and then use e.g.
data(:,2) = ...
to get the column vector for the second data.
채택된 답변
추가 답변 (3개)
Robert Cumming
2014년 7월 3일
Create the dynamic variables inside a struct instead of using eval
var_name = {'A','B','C'};
for i=1:length(var_name)
myStruct.(var_name{i}) = zeros(10,1);
end
the cyclist
2014년 7월 3일
0 개 추천
the cyclist
2014년 7월 3일
편집: John D'Errico
2014년 7월 3일
Please tell us you are not naming those 106 variables A,B,C, ..., AA, AB, AC, etc!
Could you do this via a cell array instead?
for n = 1:106
A{n} = zeros(10,1);
end
and use those as your variables?
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!