Problem when running a GUI to open, display and plot excel data from a *.xls file.
Show older comments
Hello,
I am having some issues with a code that I saw on the Matlab website. Basically, when I execute the code I get the error Warning: File: mainGui.m Line: 149 Column: 18 Function with duplicate name "readExcelColumns" cannot be called.
handles =
figure1: 173.0012
pushbuttonLoadXLS: 1.0013
popupmenuY: 0.0013
popupmenuX: 179.0012
axes1: 174.0012
output: 173.0012
fileName: 'march-sep_data.xls'
??? Undefined function or variable 'hObject'.
??? Error while evaluating uicontrol Callback
What I am trying to do with this is to plot rainfall data over a period of time but when I go to the dropdown menu for either axes, instead of getting date vs precipitation, I get the contents of column A. Here is the code:
function varargout = mainGui(varargin)
% MAINGUI MATLAB code for mainGui.fig
% MAINGUI, by itself, creates a new MAINGUI or raises the existing
% singleton*.
%
% H = MAINGUI returns the handle to a new MAINGUI or the handle to
% the existing singleton*.
%
% MAINGUI('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MAINGUI.M with the given input arguments.
%
% MAINGUI('Property','Value',...) creates a new MAINGUI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before mainGui_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to mainGui_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 mainGui
% Last Modified by GUIDE v2.5 26-Sep-2011 14:59:19
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @mainGui_OpeningFcn, ...
'gui_OutputFcn', @mainGui_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 mainGui is made visible.
function mainGui_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 mainGui (see VARARGIN)
% Choose default command line output for mainGui
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes mainGui wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = mainGui_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 selection change in popupmenuX.
function popupmenuX_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuX (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenuX contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenuX
% --- Executes during object creation, after setting all properties.
function popupmenuX_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuX (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in popupmenuY.
function popupmenuY_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuY (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenuY contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenuY
% --- Executes during object creation, after setting all properties.
function popupmenuY_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuY (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function [x,y] = readExcelColumns(fileName,xColNum,yColNum)
a = xlsread(fileName);
x= a(:, xColNum);
y= a(:, yColNum);
% --- Executes on button press in pushbuttonLoadXLS.
function pushbuttonLoadXLS_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonLoadXLS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles.fileName = uigetfile('*.xls')
guidata(hObject,handles)
setPopupmenuString(handles.popupmenuX, eventdata, handles)
setPopupmenuString(handles.popupmenuY, eventdata, handles)
set(handles.popupmenuX,'callback','mainGui(''updateAxes'',hObject,eventdata,guidata(hObject))')
set(handles.popupmenuY,'callback','mainGui(''updateAxes'',hObject,eventdata,guidata(hObject))')
function setPopupmenuString(hObject, eventdata, handles)
fileName = handles.fileName;
[numbers, colNames] = xlsread(fileName);
set(hObject, 'string', colNames);
function [x,y] = readExcelColumns(fileName,xColNum,yColNum)
a = xlsread(fileName);
x= a(:, xColNum);
y= a(:, yColNum);
function updateAxes(hObject, eventdata, handles)
xColNum = get(handles.popupmenuX, 'value');
yColNum = get(handles.popupmenuY, 'value');
fileName= handles.fileName;
[x,y] = readExcelColumns(fileName,xColNum,yColNum)
plot(handles.axes1,x,y)
Thanks in Advance
Accepted Answer
More Answers (2)
Xhuljano
on 27 Sep 2011
0 votes
3 Comments
Fangjun Jiang
on 27 Sep 2011
Which line caused the error? Type "dbstop if error" before run the program to debug your code.
Xhuljano
on 27 Sep 2011
Fangjun Jiang
on 27 Sep 2011
Well, the error message says that the popupmenu 'popupmenuX' is not found in the GUI handles.
david
on 16 Dec 2011
0 votes
hello jst came across this post i av tried all that you have said am still getn similar error message. also how can i call an outside function
4 Comments
Fangjun Jiang
on 16 Dec 2011
Glad you did a search first. Not that many users do this.
You can all your function as long as the corresponding .m file is in the MATLAB path. See <http://www.mathworks.com/help/techdoc/matlab_prog/f7-58170.html;jsessionid=yQNnTrHWpv93hXyn8xMt9bxNvh0vyD2xhr0QCCqGmBRv5rk8gYny!528457373? Calling Functions> and <http://www.mathworks.com/help/techdoc/matlab_prog/f7-38085.html? Type of Functions>
david
on 17 Dec 2011
thanks for ur reply am reading it nw the major problem now is dat am getn only a single dot instead of a multiple scatter plot
Fangjun Jiang
on 17 Dec 2011
Post a new question. I don't this thread is fit for your issue.
david
on 17 Dec 2011
ok thanks
Categories
Find more on Spreadsheets in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!