Code covered by the BSD License  

Highlights from
Demo files for MATLAB for Excel Users in Academia Webinar

image thumbnail

Demo files for MATLAB for Excel Users in Academia Webinar

by

 

19 Jul 2007 (Updated )

These are the demo files used in the "MATLABĀ® for Excel Users in Academia" Webinar

energyForecastGUI(varargin)
function varargout = energyForecastGUI(varargin)
% ENERGYFORECASTGUI M-file for energyForecastGUI.fig
%      ENERGYFORECASTGUI, by itself, creates a new ENERGYFORECASTGUI or raises the existing
%      singleton*.
%
%      H = ENERGYFORECASTGUI returns the handle to a new ENERGYFORECASTGUI or the handle to
%      the existing singleton*.
%
%      ENERGYFORECASTGUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in ENERGYFORECASTGUI.M with the given input arguments.
%
%      ENERGYFORECASTGUI('Property','Value',...) creates a new ENERGYFORECASTGUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before energyForecastGUI_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to energyForecastGUI_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

% Copyright 2007 The MathWorks, Inc.

% Edit the above text to modify the response to help energyForecastGUI

% Last Modified by GUIDE v2.5 15-Mar-2007 08:05:57

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @energyForecastGUI_OpeningFcn, ...
                   'gui_OutputFcn',  @energyForecastGUI_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 energyForecastGUI is made visible.
function energyForecastGUI_OpeningFcn(hObject, eventdata, handles, varargin) %#ok
% 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 energyForecastGUI (see VARARGIN)

% Choose default command line output for energyForecastGUI
handles.output = hObject;

if ~isfield(handles, 'zoomBtn')
  handles = createToolbarBtns(handles);
end

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes energyForecastGUI wait for user response (see UIRESUME)
% uiwait(handles.energyForecastGUI);

% Optional argument calls
if nargin == 5
  ln = length(varargin{2});
  if ln > 0
    vars = varargin{2};
    Open_Callback(handles.Open, [], handles, vars{1});
    if ln > 1
      set(handles.days, 'Value', vars{2});
      if ln > 2
        switch vars{3}
          case 1
            set(handles.onestd, 'Value', 1);
          case 2
            set(handles.twostd, 'Value', 1);
          case 3
            set(handles.threestd, 'Value', 1);
        end
        if ln > 3
          switch vars{4}
            case 1
              set(handles.totalgrid, 'Value', 1);
            case 2
              set(handles.liability, 'Value', 1);
          end
          if ln > 4
            set(handles.hours, 'String', vars{5});
          end
        end
      end
      estimate_Callback(handles.estimate, [], handles);
    end
  end
end   
  

% --- Outputs from this function are returned to the command line.
function varargout = energyForecastGUI_OutputFcn(hObject, eventdata, handles) %#ok
% 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 estimate.
function estimate_Callback(hObject, eventdata, handles) %#ok
% hObject    handle to estimate (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Retreived data from workspace

histData       = getappdata(handles.energyForecastGUI, 'historical');

totalgrid      = get(handles.totalgrid, 'Value');
liability      = get(handles.liability, 'Value');

if    (totalgrid == 1 && liability == 0)
   data = histData.gridDemand  ;
elseif(totalgrid == 0 && liability == 1)
   data = histData.powerOutput ;
else
   error('Invalid setting for "total grid" and "liability"')
end

% Pull selected days from GUI

choiceDays     = get(handles.days ,'String');
selection      = get(handles.days ,'Value' );
selectedDays   = {choiceDays{selection}    };

% Pull selected hours from GUI

selectedHours  = str2num(get(handles.hours,'String')); %#ok

% Pull standard deviation from GUI

config.std_one = get(handles.onestd  , 'Value');
config.std_two = get(handles.twostd  , 'Value');
config.std_thr = get(handles.threestd, 'Value');

% Call estimation function

h = plotEstimate(data           , histData.dayType, ...
                 selectedDays   , selectedHours   , config  );

set(handles.onestd,   'UserData', h(1));
set(handles.twostd  , 'UserData', h(2));
set(handles.threestd, 'UserData', h(3));


% --- Executes during object creation, after setting all properties.
function days_CreateFcn(hObject, eventdata, handles) %#ok
% hObject    handle to days (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: listbox 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 during object creation, after setting all properties.
function hours_CreateFcn(hObject, eventdata, handles) %#ok
% hObject    handle to hours (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit 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 Open_Callback(hObject, eventdata, handles, fn) %#ok
% hObject    handle to Open (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

if nargin < 3
  handles = guidata(hObject);
end
if nargin < 4
  [fileName, pathName] = uigetfile('*.xls');
else
  [pathName, fileName, ext] = fileparts(fn);
  fileName = [fileName, ext];
end

if isnumeric(fileName)
  return;
end

set(handles.forecastpanel, 'Title', ['Forecast: ', fileName]);

dayType     = xlsread(fullfile(pathName, fileName), 'Weather'   , 'B2:B32');
hdd         = xlsread(fullfile(pathName, fileName), 'Weather'   , 'C2:C32');
gridDemand  = xlsread(fullfile(pathName, fileName), 'Total'     , 'B2:Y32'); 
powerOutput = xlsread(fullfile(pathName, fileName), 'Liability' , 'B2:Y32');

data.gridDemand  = gridDemand ;
data.powerOutput = powerOutput;
data.dayType     = dayType    ;
data.hdd         = hdd        ;

set(handles.estimate, 'enable', 'on');

setappdata(handles.energyForecastGUI, 'historical', data);

set(handles.onestd,   'UserData', []);
set(handles.twostd  , 'UserData', []);
set(handles.threestd, 'UserData', []);

if get(handles.totalgrid, 'Value')
  dat = data.gridDemand';
else
  dat = data.powerOutput';
end
plot(dat);
xlabel('Hour of Day'              );
ylabel('System Load (MW)'         );
title ('Daily Profile');
grid  ('on');

xlim  ([ 1  24]                   );
ylim  ([25 120]                   );
set   (gca, 'xtick', [ 1 3 6 9 12 15 18 21 24 ]);

% --- Executes on button press in onestd.
function onestd_Callback(hObject, eventdata, handles) %#ok
% hObject    handle to onestd (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 onestd

switch get(hObject, 'Value')
  case 0
   set(get(hObject, 'UserData'), 'Visible', 'off');
  case 1
   set(get(hObject, 'UserData'), 'Visible', 'on' );
end

% --- Executes on button press in twostd.
function twostd_Callback(hObject, eventdata, handles) %#ok
% hObject    handle to twostd (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 twostd

switch get(hObject, 'Value')
  case 0
   set(get(hObject, 'UserData'), 'Visible', 'off');
  case 1
   set(get(hObject, 'UserData'), 'Visible', 'on' );
end


% --- Executes on button press in threestd.
function threestd_Callback(hObject, eventdata, handles) %#ok
% hObject    handle to threestd (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 threestd

switch get(hObject, 'Value')
  case 0
   set(get(hObject, 'UserData'), 'Visible', 'off');
  case 1
   set(get(hObject, 'UserData'), 'Visible', 'on' );
end


% create toolbar buttons
function handles = createToolbarBtns(handles)

% load button icons
load GUIicons

ht = uitoolbar(...
  'Parent'          , handles.energyForecastGUI);
handles.openBtn = uipushtool(ht , ...
  'CData'           , OpenCData, ...
  'ClickedCallback' , @Open_Callback, ...
  'TooltipString'   , 'Open File');
handles.printBtn = uipushtool(ht , ...
  'CData'           , PrintCData, ...
  'ClickedCallback' , @print_fcn, ...
  'TooltipString'   , 'Print Figure');
handles.zoomBtn = uitoggletool(ht , ...
  'CData'           , ZoomCData, ...
  'ClickedCallback' , @zoom_fcn, ...
  'Separator'       , 'on', ...
  'TooltipString'   , 'Zoom');
handles.panBtn = uitoggletool(ht , ...
  'CData'           , PanCData, ...
  'ClickedCallback' , @pan_fcn, ...
  'TooltipString'   , 'Pan');
handles.datatipBtn = uitoggletool(ht , ...
  'CData'           , DataTipCData, ...
  'ClickedCallback' , @datatip_fcn, ...
  'TooltipString'   , 'Data Tip');


% zoom button callback
function zoom_fcn(hObject, eventdata) %#ok
% hObject    handle to Zoom (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB

handles = guidata(hObject);
if strcmpi(get(hObject, 'State'), 'off')
  zoom off;
else
  set(handles.datatipBtn, 'State', 'off');
  set(handles.panBtn, 'State', 'off');
  datacursormode off;
  pan off;
  zoom yon;
end

% datatip button callback
function datatip_fcn(hObject, eventdata) %#ok
% hObject    handle to DataTip (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB

handles = guidata(hObject);
if strcmpi(get(hObject, 'State'), 'off')
  datacursormode off;
else
  set(handles.zoomBtn, 'State', 'off');
  set(handles.panBtn, 'State', 'off');
  zoom off;
  pan off;
  datacursormode on;
end

% pan button callback
function pan_fcn(hObject, eventdata) %#ok
% hObject    handle to Pan (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB

handles = guidata(hObject);
if strcmpi(get(hObject, 'State'), 'off')
  pan off;
else
  set(handles.zoomBtn, 'State', 'off');
  set(handles.datatipBtn, 'State', 'off');
  zoom off;
  datacursormode off;
  pan on;
end

% print button callback
function print_fcn(hObject, eventdata, handles) %#ok
% hObject    handle to Print (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB

handles = guidata(hObject);
printdlg(handles.energyForecastGUI);



Contact us