Using assignin in GUIDE
Mostra commenti meno recenti
Hello everybody,
I've got a problem in which I want to generate variables of a structure I've got a structure called newData which consists of data, given by the matrix 'data' and the imported text in the cell called 'textdata'. I want to seperate the two variable in the structure. Before I used the following code
newData = importdata(file, ' ', 6); %imports data
% Create new variables in the base workspace from those fields.
vars = fieldnames(newData); % which are 'data' and 'textdata'
for i = 1:length(vars)
%this should create the variables 'data' and 'texdata'
assignin('base', vars{i}, newData.(vars{i}));
end
%which results in an error, as 'textdata' is not created by the assignin.
headers = char(textdata(6,:));
The error is generated by the fact that apparently, the variables data and textdata are not created (or not created in the right workspace) and consequently matlab cannot find these variables in further calculations (in this case the creation of headers cannot be executed, since 'textdata' is unknown.)
I used this piece before in a single m-file, and this worked perfect, But now I'm incorporating this in a GUI, so i need to use this within a function, which results in errors. I've also tried to write this piece in a different function m-file, which yields the same results. Basically, the problem is: how to use assignin within a (GUI) function, or perform the same action without using assignin?
I hope the problem is clear, and you guys can help me out.
Sincerely,
Roy
5 Commenti
Walter Roberson
il 15 Giu 2012
What error do you encounter? assigin 'base' is valid within callbacks.
Roy Veldhuizen
il 15 Giu 2012
Walter Roberson
il 15 Giu 2012
How do you call upon the variables? Remember that functions do not run in the base workspace, so unless you evalin('base') of the variable, you are not going to be able to see the value you created.
Roy Veldhuizen
il 18 Giu 2012
Walter Roberson
il 18 Giu 2012
assignin('base') writes data into the base workspace, which is the workspace that is active when you are not inside any function (e.g., the workspace you get if you start assigning variables at the command line just after entering MATLAB.)
assignin('base') does NOT write variables into the current workspace (not unless the current workspace _is_ the base workspace, such as if you are executing a script from the command line.)
You write variables into the base workspace but then you try to use them in the current workspace.
headers = char(evalin('base', 'textdata(6,:)'));
Risposta accettata
Più risposte (1)
Roy Veldhuizen
il 27 Giu 2012
0 voti
Categorie
Scopri di più su Creating, Deleting, and Querying Graphics Objects in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!