Remove for-loop by using cellfun
Ältere Kommentare anzeigen
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 Kommentare
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
am 3 Jul. 2014
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.
Akzeptierte Antwort
Weitere Antworten (3)
Robert Cumming
am 3 Jul. 2014
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
1 Kommentar
Christophe
am 3 Jul. 2014
the cyclist
am 3 Jul. 2014
0 Stimmen
the cyclist
am 3 Jul. 2014
Bearbeitet: John D'Errico
am 3 Jul. 2014
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?
2 Kommentare
Christophe
am 3 Jul. 2014
John D'Errico
am 3 Jul. 2014
Changed zeros{10,1} to zeros(10,1).
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!