MATLAB Answers

Get variables to Workspace

4 views (last 30 days)
Johan
Johan on 10 Jul 2013
Hi, I've made a checkbox with the code below, the problem is that the variables Total, Individual, defaultval aren't saved in the workspace. How do I solve this?
function varargout = Ceckbox(varargin)
% CECKBOX MATLAB code for Ceckbox.fig
% CECKBOX, by itself, creates a new CECKBOX or raises the existing
% singleton*.
%
% H = CECKBOX returns the handle to a new CECKBOX or the handle to
% the existing singleton*.
%
% CECKBOX('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in CECKBOX.M with the given input arguments.
%
% CECKBOX('Property','Value',...) creates a new CECKBOX or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Ceckbox_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Ceckbox_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Ceckbox
% Last Modified by GUIDE v2.5 10-Jul-2013 07:14:19
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Ceckbox_OpeningFcn, ...
'gui_OutputFcn', @Ceckbox_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Ceckbox is made visible.
function Ceckbox_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Ceckbox (see VARARGIN)
% Choose default command line output for Ceckbox
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Ceckbox wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Ceckbox_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton.
function pushbutton_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Individual=get(hObject,'Value')
if Individual==1
Total=0
close
end
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Total=get(hObject,'Value')
if Total==1
Individual=0
close
end
% --- Executes on button press in checkbox1.
function checkbox1_Callback(hObject, eventdata, handles)
% hObject handle to checkbox1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of checkbox1
defaultval=get(hObject,'Value')
save('Variables.m',Total,Individual,defaultval)
Regards Johan

  0 Comments

Sign in to comment.

Accepted Answer

Jan
Jan on 10 Jul 2013
Each function has its own workspace, because this is (one of) the intention(s) of a function. Therefore this line must fail:
save('Variables.m', Total, Individual, defaultval)
It tries to save the variables, whose names are stores as Strings to the variables Total, Individual, and defaultval to the file 'Variables.m'. This contains several problems:
  1. The variables Total, Individual, and defaultval are not defined in the current workspace, which is the workspace of the subfunction checkbox1_Callback.
  2. Saving to an M-file is a bad idea, because the resulting file will not have a proper Matlab-Syntax. Use save to write binary files.
  3. You do not want to write the variable whose name is store in the variable Total, but the variable called 'Total'. Then you need the name as a string:
save('Variables.mat', 'Total')
There are more problems in the posted code: The callbacks of the buttons do not store the values permanently, but only in their current workspace, which vanishes as soon as the function is left. I do not think that close is useful in the buttons callbacks, because it prevents any further activities with the selected values.
Please explain what you want to happen with the variables. "Save in the workspace" requires too much guessing for an answer.

  1 Comment

Johan
Johan on 10 Jul 2013
Hi, I want to use the variables in another function which runs either the skript for Frekf-total or Frekf-individual and if the "use default values" box is checked, it will skip a part of the code. The short answer is that I want to use them in an if-loop.
What is your recomendation?
Thanks for your help
Johan

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by