how to assign a variable using a string
    11 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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 Commenti
Risposte (2)
  Walter Roberson
      
      
 il 1 Apr 2013
        2 Commenti
  Ahmed A. Selman
      
 il 2 Apr 2013
				The task was (how to assign a variable using a string). I not sure if the question mentioned (using cells) anywhere?!
  Walter Roberson
      
      
 il 2 Apr 2013
				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
      
 il 1 Apr 2013
        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 Commento
  Jan
      
      
 il 2 Apr 2013
				Do not use the EVAL approach. You find too many people here in the forum who got too many problems by this.
Vedere anche
Categorie
				Scopri di più su Entering Commands in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!