Plotting in Matlab GUI.
27 views (last 30 days)
Show older comments
Franta Cymorek
on 10 Feb 2017
Commented: Franta Cymorek
on 10 Feb 2017
I am working on a GUI in Matlab. I have an axes there, and two buttons. Pushing the button1 I load an Excel sheet in it (Contains 3 columns and various number of rows - always). I need to store the data in a variable, then pressing button2 I want to plot the data (I want to be able to specify which column will be plotted). I'm struggelling with passing the data insine button1 to a variable. Could you please give me a hint?
This is the code:
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename, pathname] = uigetfile('MultiSelect','on');
if isequal(filename,0) || isequal(pathname,0)
return
end
guidata(hObject, handles);
fullpathname = strcat(pathname, filename);
set(handles.text3,'String', fullpathname);
fileID = fopen(strcat(pathname, filename), 'r'); % read-only permission
handles.fileData = fscanf(fileID,'%d');
handles = guidata(hObject);
handles.y = 'HERE I WANT TO STORE THE DATA.';
guidata(hObject, handles);
% --- 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)
handles = guidata(hObject);
handles.x = handles.y
guidata(hObject, handles);
plot(handles.x);
grid on
6 Comments
Adam
on 10 Feb 2017
Surely
col = 2;
data = handles.fileData(:,2);
is all you need if your data is loaded in correctly?
Accepted Answer
Philip G
on 10 Feb 2017
Hi, the approach using guidata to store and retrieve data is correct. The general structure should be like
function dataimport_Callback(hObject, eventdata, handles)
x = 0:100;
y = -100:0;
handles.x =x;
handles.y =y;
guidata(hObject, handles) % here you store x and y in "handles"
function drawing_Callback(hObject, eventdata, handles)
plot(handles.x,handles.y)
What problem are you having exactly? With the above workflow using guidata(hObject) to retrieve data and guidata(hObject, handles) to store data in handles you should be good to go.
More Answers (0)
See Also
Categories
Find more on Interactive Control and Callbacks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!