Problem when running a GUI to open, display and plot excel data from a *.xls file.
이전 댓글 표시
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
채택된 답변
추가 답변 (2개)
Xhuljano
2011년 9월 27일
0 개 추천
댓글 수: 3
Fangjun Jiang
2011년 9월 27일
Which line caused the error? Type "dbstop if error" before run the program to debug your code.
Xhuljano
2011년 9월 27일
Fangjun Jiang
2011년 9월 27일
Well, the error message says that the popupmenu 'popupmenuX' is not found in the GUI handles.
david
2011년 12월 16일
0 개 추천
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
Fangjun Jiang
2011년 12월 16일
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
2011년 12월 17일
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
2011년 12월 17일
Post a new question. I don't this thread is fit for your issue.
david
2011년 12월 17일
ok thanks
카테고리
도움말 센터 및 File Exchange에서 Introduction to Installation and Licensing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!