how to assign a variable using a string

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

回答(2 个)

2 个评论

The task was (how to assign a variable using a string). I not sure if the question mentioned (using cells) anywhere?!
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.

请先登录,再进行评论。

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 个评论

Do not use the EVAL approach. You find too many people here in the forum who got too many problems by this.

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息

标签

提问:

2013-4-1

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by