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!