Using assignin or evalin command to populate Structure Elements with Numeric Data.
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Shyama Prasad Mishra
le 24 Juin 2015
Modifié(e) : Stephen23
le 29 Juin 2015
Hello,
I am getting an error while executing the below command:
assignin('base', 'A.B', 1)|
Error:
??? Error using ==> assignin
Invalid variable name "A.B" in ASSIGNIN.
As a work around i tried to use:
assignin('base', 'temp', 1);
evalin('base','A.B = temp');
evalin('base','clear temp');
The above work around was proposed in one of the previous threads:
The problem I have is that, my Structure elements are read from a Cell Array inside a for loop.
Lets say C = {'A.B', 'A1.B1'}
So how do I pass 'C' as a parameter to the below line:
evalin('base','C = temp')
Expected output: A.B = 1, A1.B1 = 1 (In Base Workspace)
I also tried to use setfield command, but could not succeed.
Thanks, Shyama
1 commentaire
Réponse acceptée
Azzi Abdelmalek
le 24 Juin 2015
Modifié(e) : Azzi Abdelmalek
le 24 Juin 2015
You probably can use other alternatives here http://www.mathworks.com/help/matlab/matlab_prog/string-evaluation.html
For your problem you can use
C = {'A.B', 'A1.B1'}
assignin('base', 'temp', 1);
cellfun(@(x) evalin('base',[x '=temp']),C)
Plus de réponses (1)
Matt J
le 24 Juin 2015
Not sure why you're not just using setfield(), but another option is
evalin('base','A.B=1');
or
evalin('base',['A.B=' num2str(1)]);
1 commentaire
Voir également
Catégories
En savoir plus sur Structures dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!