Filter löschen
Filter löschen

Plotting in Matlab GUI.

38 Ansichten (letzte 30 Tage)
Franta Cymorek
Franta Cymorek am 10 Feb. 2017
Kommentiert: Franta Cymorek am 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 Kommentare
Adam
Adam am 10 Feb. 2017
Surely
col = 2;
data = handles.fileData(:,2);
is all you need if your data is loaded in correctly?
Franta Cymorek
Franta Cymorek am 10 Feb. 2017
It's still not what I meant, but thanks for your help.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Philip G
Philip G am 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.
  1 Kommentar
Franta Cymorek
Franta Cymorek am 10 Feb. 2017
Bearbeitet: Franta Cymorek am 10 Feb. 2017
By pressing button2, I want to plot the data. Data are stored in an Excel sheet. I want to choose which column will be plotted. Respectivly, in handle.y store the loaded data. Later, in handle.x I want to specify which column.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Interactive Control and Callbacks finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by