how to assign a variable using a string
49 次查看(过去 30 天)
显示 更早的评论
I have a set of variables called "error1", "error2", etc.
Each is a 4D matrix and I want to extract certain parts of them for comparison, for example I'd like to plot the vector mean(errori(1,:,1,1)), where i = 1,2,...
How can I do this? I've tried using
for i = 1:10
a = sprintf('error%s',num2str(i));
b(i) = mean(a(1,:,1,1));
end
But that just sets a equal to a string, not the actual variable! Is there some function I can use that makes MATLAB recognise a string as a variable with the same name?
Thanks Mike
0 个评论
回答(2 个)
Walter Roberson
2013-4-1
2 个评论
Ahmed A. Selman
2013-4-2
The task was (how to assign a variable using a string). I not sure if the question mentioned (using cells) anywhere?!
Walter Roberson
2013-4-2
Q: "I want to learn how to cut glass so I can unlock this door that I can't push open!"
A: "Did you try pulling it instead?"
Showing people alternatives to avoid their problems in the first place is a valid answer.
Besides, FAQ does show the (not-recommended!) eval() solution.
Ahmed A. Selman
2013-4-1
Try (genvarname) with (eval) functions. Example (alter the example below to your use, i.e., instead of eval([b]) use eval([b = 'some_function(i)']) ):
clear
clc
error1=eye(3,3);
error2=eye(3,3)*2;
error3=eye(3,3)*3;
for i = 1:3
a = sprintf('error%s',num2str(i));
b = genvarname(a);
eval([b])
end
.. etc.
1 个评论
Jan
2013-4-2
Do not use the EVAL approach. You find too many people here in the forum who got too many problems by this.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!