MATLAB 程式設計入門篇 方煒 台大生機系

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

Type out your Chinese name and grade
MATLAB小结、 经典迭代法、CG.
TQC+ 物件導向程式認證-JAVA.
“走进三国” 读书汇报会 广州市玉岩中学 李玉明( ).
1012 MATLAB 教學 彭奕翔 2013/02/27.
税务认定 永州市国家税务局纳税人学校.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
CATIA V5 培训教程 工 程 图.
第七讲 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。
Lotus Domino R7 Designer
第1章 MATLAB概述 1.1 MATLAB 7.x简介 是Matrix Laboratory的缩写,它将计算、可视化和编程功能于一身,是一个开放的基于矩阵的交互式开发系统。主要用于数学计算、系统建模与仿真、数据分析与可视化等。(Mathworks始创于1984) MATLAB的系统结构.
(Exec1) GIS 空间分析-使用ArcGIS (Exec1)
Chapter 5 Verilog硬體描述語言
8.1 印刷电路板基础 8.2 PCB编辑器 8.1.1印刷电路板的结构 元件的封装(Footprint)
Matlab M檔案 方煒 台大生機系.
程式語言 I – VISUAL BASIC 選擇結構語法與應用 Chapter 7 認知
第18章 B4J的跨平台應用程式開發 18-1 B4J的GUI設計工具與介面控制項 18-2 使用B4J的介面控制項
MATLAB 程式設計入門篇 握把式圖形與 GUI 設計
音訊 延伸學習 Audio Signal Processing and Recognition (音訊處理與辨識) 張智星
MATLAB 程式設計入門篇 握把式圖形與 GUI 設計
MATLAB 程式設計入門篇 握把式圖形與 GUI 設計
XBRL未來發展趨勢 2009年12月 For information on applying this template onto existing presentations, refer to the notes on slide 3 of this presentation. The Input.
Application of Matlab Language
第7章 MATLAB图形用户界面设计 7.1 菜单设计 7.2 对话框设计 7.3 用户界面设计工具.
計算機程式 廖文淵 Department of Computer Science and Engineering
第八讲 MATLAB图形用 户界面设计.
安裝JDK 安裝Eclipse Eclipse 中文化
程式流程控制 方煒 台大生機系.
第三章 项目设定.
Merge Partners’ programs by Matlab
Visual Basic 物件導向程式設計簡介.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
数据分析绘图工具 ——Origin6.0.
瞬态油漆混合器 练习 6.
第六章 人机交互界面 的表示模型与实现 山东大学计算机学院.
授課教授:張寶基 助教:梁凱雯 郭千豪 音視訊處理實驗室 2014 / 9 / 30
第1章 MATLAB操作基础 1.1 绪论 1.2 MATLAB概述 1.3 MATLAB的运行环境与安装 1.4 MATLAB集成环境 1.5 MATLAB帮助系统.
第一單元 建立java 程式.
VS.NET 2003 IDE.
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
Ch20. 計算器 (Mac 版本).
MATLAB 程式設計入門篇 動畫製作.
MATLAB 程式設計入門篇 二維平面繪圖 (part2)
Programming Your App’s Memory 靜宜大學資管系 楊子青
第11章 MATLAB图形用户界面设计 11.1 菜单设计 11.2 对话框设计 11.3 图形用户界面设计工具
MATLAB 程式設計入門篇 三維立體繪圖 (part1)
三維繪圖 Helix t = 0:pi/50:10*pi; % linspace(0,10*pi,500); figure plot3(sin(t),cos(t),t) grid on axis square Remark: zlabel, view, surf.
GUI Title and GUI Status
本章學習目標 學習三維繪圖的基本技巧 學習peaks() 函數的用法 學習二維與三維等高線圖的繪製 學習三維圖形的編修
撰寫MATLAB基礎財務程式 柯婷瑱.
GridView.
第二章 MATLAB编程与作图 2.1 程序设计 2.2 作图 2.3 在线帮助和文件管理 2.4 习题 2019年4月23日
HelloPurr_Extend 靜宜大學資管系 楊子青
VC++程序调试演示 An Overview of ICU 19th International Unicode Conference
Inspiration From Above 1 Chinese Evangelical Free Church
張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室
單元名稱:結構化程式設計 報告人 劉洲溶.
Dreamweaver 進階網頁製作 B 許天彰.
第1章 MATLAB操作基础 1. 1 MATLAB概述 1. 2 MATLAB的运行环境与安装 1. 3 MATLAB集成环境 1
MATLAB 程式設計 程式除錯 方煒 台大生機系.
2012 程式設計比賽 Openfind 天使帝國 v2.0 (蓋亞的紋章).
A Simple iOS Application
MATLAB 实用教程.
第二单元 第3课 Matlab命令执行方式 1.Matlab命令执行方式 2.程序调试.
数学是知识的工具,亦是其它知识工具的泉源。 ——勒内·笛卡尔
Unix指令4-文字編輯與程式撰寫.
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
Presentation transcript:

MATLAB 程式設計入門篇 方煒 台大生機系 握把式圖形與 GUI 設計 方煒 台大生機系

GUI:Graphical User Interface MATLAB 程式設計入門篇 Handle Graphics概念 握把式圖形Handle Graphics概念 每一個圖形元件視為一個物件Object Object都有一個獨一無二的握把Handle GUI:Graphical User Interface

MATLAB 程式設計入門篇 圖形物件的階層結構 圖形物件階層結構(Hierarchy) Rectangle

MATLAB 程式設計入門篇 說明範例

圖形物件的性質存取 以 GUI 進行圖形物件的性質存取 MATLAB 5.x MATLAB 6.x MATLAB 7.x 以命令列進行圖形物件的性質存取

MATLAB 5.x MATLAB 5.x >>propedit(gcf) gcf 傳回使用中圖形握把,開啟「性質編輯器」(Property Editor),產生的新視窗如下:

MATLAB 程式設計入門篇 MATLAB 5.x 性質編輯器 MATLAB 5.x 物件瀏覽 性質陳列 性質修改

MATLAB 6.x Propedit01.m MATLAB 6.x >>peaks; % 畫出 peaks 3D 圖

MATLAB 程式設計入門篇 MATLAB 6.x 性質編輯器 MATLAB 6.x

MATLAB 程式設計入門篇

MATLAB 7.x 性質編輯器 MATLAB 7.x >>peaks; % 畫出 peaks 3D 圖 >>propedit; % 開啟性質編輯器

MATLAB 7.x 性質編輯器開啟方法 變更物件性質 (自己玩吧!) 命令視窗Propedit 工作列上”View” ”Property Editor” 變更物件性質 按工作列上白色箭頭””點選所需物件 Property Editor 中 ”Inspector” 按鈕 (自己玩吧!)

Property Editor & Property Inspector MATLAB 程式設計入門篇 Property Editor & Property Inspector 兩者效果相同,但Property Inspector較有助於m檔案中程式撰寫的學習與修改。

圖形修改介面:繪圖工具(Plot Tools) MATLAB 程式設計入門篇 圖形修改介面:繪圖工具(Plot Tools)

圖形物件的性質存取 以命令列進行圖形物件的性質存取 set 設定某個性質的值 get 取得某個性質的值 MATLAB 程式設計入門篇 圖形物件的性質存取 以命令列進行圖形物件的性質存取 set 設定某個性質的值 get 取得某個性質的值 findobj 在握把式圖形的階層式結構中,找出您要的物件。 xpsound、travel、truss、lorenz 等指令

set範例:hg01.m, hg02.m t = 0:0.1:4*pi; y = exp(-t/5).*sin(t); MATLAB 程式設計入門篇 set範例:hg01.m, hg02.m t = 0:0.1:4*pi; y = exp(-t/5).*sin(t); h = plot(t, y); % h 為曲線的握把 set(h,'Linewidth',3); % 將曲線寬度改為 3 set(h,'Marker','o');%將曲線的線標改成小圓圈 set(h,'MarkerSize',20);% 將線標的大小改成 20

get範例: >>get(h,'LineWidth') %取得曲線寬度 ans =3; MATLAB 程式設計入門篇 get範例: >>get(h,'LineWidth') %取得曲線寬度 ans =3; >> get(h,'Color') %取得曲線顏色 ans = 0 0 1

MATLAB 程式設計入門篇 單獨使用set(h) 列出h之所有性質

findobj範例:findobj01.m % k=findobj('tag','figure number1'); % close(k) MATLAB 程式設計入門篇 findobj範例:findobj01.m % k=findobj('tag','figure number1'); % close(k) figure('tag','figure number1','name','Fig 01'); plot(rand(10,2)); % 畫出兩條曲線 h=findobj(0,'type','line') % 找出曲線的握把 set(h,'LineWidth',3);

MATLAB 程式設計入門篇 MATLAB GUI GUI 的設計 M 檔案 GUIDE 發展環境

MATLAB 程式設計入門篇 M檔案 M 檔案的GUI 設計 Uicontrol Mouse Events

uicontrol範例1 uicontrol01.m MATLAB 程式設計入門篇 uicontrol範例1 uicontrol01.m h = uicontrol; % 產生按鈕 set(h,'String','請按我!'); % 在按鈕表面加入文字「請按我!」 cmd ='fprintf(''有人按我一下喔!\n'');'; % 定義按鈕被按後的反應指令 set(h,'Callback',cmd); % 設定按鈕的反應指令

MATLAB 程式設計入門篇 Uicontrol01.m 輸出畫面

UI(User Interface)控制物件 MATLAB 程式設計入門篇 UI(User Interface)控制物件 Uicontrol產生UI(User Interface)控制物件 按鈕(Push Button) 滑動棒(Sliding Bar) 圓形按鈕(Radio Button) 框架(Frame) 核計方塊(Check Box) 文字欄位(Edit Box) 列表式選單(List Menu) 下拉式選單(Popup Menu)

範例2: uicontrol02.m close all % 關閉所有圖形視窗 MATLAB 程式設計入門篇 範例2: uicontrol02.m close all % 關閉所有圖形視窗 uicontrol('style','push','position',[200 20 80 30]); uicontrol('style','slide','position',[200 70 80 30]); uicontrol('style','radio','position',[200 120 80 30]); uicontrol('style','frame','position',[200 170 80 30]); uicontrol('style','check','position',[200 220 80 30]); uicontrol('style','edit','position',[200 270 80 30]); uicontrol('style','list','position',[200 320 80 30],'string', '1|2|3|4'); uicontrol('style','popup','position',[200 370 80 30],'string','one|two|three');

MATLAB 程式設計入門篇 uicontrol02.m 畫面輸出

MATLAB 程式設計入門篇 另一個較複雜的uicontrol範例 Ui01.m, 需要cb1, cb2, cb3.m

Ui01.m % 產生新圖形視窗,其左下角之座標為[30, 30], % 長度為300,高度為200(均以Pixel為單位) MATLAB 程式設計入門篇 Ui01.m % 產生新圖形視窗,其左下角之座標為[30, 30], % 長度為300,高度為200(均以Pixel為單位) figure('position', [30 30 300 200]); % 在圖形視窗內產生一個圖軸,其左下角之座標為[0.1, 0.2], % 長度為0.8,高度為0.8(使用標準化的單位,即圖形的左下角為[0, 0], % 長度及高度都是1。) axes('position', [0.1 0.2 0.8 0.8]); % 視窗上的第一個圖形,為三度空間的peaks函數。 pointNum = 20; [xx, yy, zz] = peaks(pointNum); surf(xx, yy, zz); axis tight

Ui01.m (continue) % 第一個UI控制物件,用以控制背景格線的顯示。 pos1 = [10, 10, 60, 20]; MATLAB 程式設計入門篇 Ui01.m (continue) % 第一個UI控制物件,用以控制背景格線的顯示。 pos1 = [10, 10, 60, 20]; h1 = uicontrol('style', 'checkbox', 'string', 'Grid on', ... 'position', pos1, 'value', 1); % 第二個UI控制物件,用以指定X軸及Y軸的格子點數目。 pos2 = [90, 10, 60, 20]; h2 = uicontrol('style', 'edit', 'string', int2str(pointNum), ... 'position', pos2, 'backgroundColor', [1 1 1]); % 第三個UI控制物件,用以指定顯示曲面所用到的色盤矩陣。 pos3 = [170, 10, 60, 20]; h3 = uicontrol('style', 'popupmenu', ... 'string', 'hsv|gray|hot|cool|pink|jet', ... 'position', pos3);

Ui01.m (continue) % 第一個UI控制物件的反應指令為「cb1」 set(h1, 'callback', ‘cb1'); MATLAB 程式設計入門篇 Ui01.m (continue) % 第一個UI控制物件的反應指令為「cb1」 set(h1, 'callback', ‘cb1'); % 第二個UI控制物件的反應指令為「cb2」 set(h2, 'callback', 'cb2'); % 第三個UI控制物件的反應指令為「cb3」 set(h3, 'callback', 'cb3');

cb1 grid;

cb2 % 取得第二個UI控制物件的數值。 pointNum = round(str2num(get(h2, 'string'))); % 若數字太大或太小,則設定為10。 if pointNum <= 1 | pointNum > 100, pointNum = 10; end set(h2, 'string', int2str(pointNum)); % 根據所得的數字,重畫peaks曲面。 [xx, yy, zz] = peaks(pointNum); surf(xx, yy, zz); axis tight; % 根據第一個UI控制物件,決定是否要畫格線。 if get(h1, 'value')==1, grid on; else grid off;

cb3 % 根據第三個UI控制物件來決定使用的色盤矩陣。 switch get(h3, 'value') case 1 colormap(hsv); case 2 colormap(gray); case 3 colormap(hot); case 4 colormap(cool); case 5 colormap(pink); case 6 colormap(jet); otherwise disp('Unknown option'); end

Ui02.m Ui01.m 執行須使用四個檔案,軟體管理不便。 MATLAB 程式設計入門篇 Ui02.m Ui01.m 執行須使用四個檔案,軟體管理不便。 所使用的變數,都存於MATLAB工作空間(Workspace),容易造成變數相衝“打槍”及無意中覆蓋。 Ui02.m的寫法(Switchyard Programming—以不同輸入的字串來控制函數的執行)執行結果的比較。 (注意h1與h2、h3間Callback執行的差異) (注意MATLAB工作空間(Workspace)中變數的變化執行後即清空變數)

Ui02.m function ui02(action) if nargin == 0, action = 'initialize'; end switch(action) case 'initialize' % 圖形視窗及UI控制物件的初始化。 % 產生新圖形視窗,其左下角之座標為[30, 30], % 長度為300,高度為200(均以Pixel為單位) figH = figure('position', [30 30 300 200]); % 在圖形視窗內產生一個圖軸,其左下角之座標為[0.1, 0.2], % 長度為0.8,高度為0.8(使用標準化的單位,即圖形的左下角為[0, 0], % 長度及高度都是1。) axes('position', [0.1 0.2 0.8 0.8]); % 視窗上的第一個圖形,為三度空間的peaks函數。 pointNum = 20; [xx, yy, zz] = peaks(pointNum); surf(xx, yy, zz); axis tight % 第一個UI控制物件,用以控制背景格線的顯示。 pos1 = [10, 10, 60, 20]; h1 = uicontrol('style', 'checkbox', ... 'tag', 'UI1', ... 'string', 'Grid on', ... 'position', pos1, 'value', 1); Ui02.m

% 第二個UI控制物件,用以指定X軸及Y軸的格子點數目。 pos2 = [90, 10, 60, 20]; h2 = uicontrol('style', 'edit', ... 'tag', 'UI2', ... 'string', int2str(pointNum), ... 'position', pos2, 'backgroundColor', [1 1 1]); % 第三個UI控制物件,用以指定顯示曲面所用到的調色盤。 pos3 = [170, 10, 60, 20]; h3 = uicontrol('style', 'popupmenu', ... 'tag', 'UI3', ... 'string', 'hsv|gray|hot|cool|pink|jet', ... 'position', pos3); % 第一個UI控制物件的反應指令為「grid」。 set(h1, 'callback', 'grid'); % 第二個UI控制物件的反應指令為「ui02('callback2')」。 set(h2, 'callback', 'ui02(''callback2'')'); % 第三個UI控制物件的反應指令為「ui02('callback3')」。 set(h3, 'callback', 'ui02(''callback3'')');

case 'callback2' % 第二個UI控制物件的callback。 h1 = findobj(0, 'tag', 'UI1'); h2 = findobj(0, 'tag', 'UI2'); % 取得第二個UI控制物件的數值。 pointNum = round(str2num(get(h2, 'string'))); % 若數字太大或太小,則設定為10。 if pointNum <= 1 | pointNum > 100, pointNum = 10; end set(h2, 'string', int2str(pointNum)); % 根據所得的數字,重畫peaks曲面。 [xx, yy, zz] = peaks(pointNum); surf(xx, yy, zz); axis tight; % 根據第一個UI控制物件,決定是否要畫格線。 if get(h1, 'value')==1, grid on; else grid off;

case 'callback3' % 第三個UI控制物件的callback。 h3 = findobj(0, 'tag', 'UI3'); % 根據第三個UI控制物件來決定使用的色盤矩陣。 switch get(h3, 'value') case 1 colormap(hsv); case 2 colormap(gray); case 3 colormap(hot); case 4 colormap(cool); case 5 colormap(pink); case 6 colormap(jet); otherwise disp('Unknown option'); end otherwise, error('Unknown action string!');

滑鼠事件 (Mouse Events) 滑鼠事件 (Mouse Events) MATLAB 程式設計入門篇 滑鼠事件 (Mouse Events) 滑鼠事件 (Mouse Events) WindowButtonDownFcn:滑鼠按鈕按下時反應指令 WindowButtonMotionFcn:滑鼠移動時的反應指令 WindowButtonUpFcn:滑鼠按鈕釋放時的反應指令 Ex:希望滑鼠先被按下後,再移動滑鼠時,才開始移動的反應指令: 滑鼠按鈕被按下時 設定WindowButtonMotionFcn 及WindowButtonDownFcn的值。 滑鼠按鈕被釋放時 清除WindowButtonMotionFcn 及WindowButtonUpFcn的值。

MATLAB 程式設計入門篇 滑鼠事件的例子 Mouse01.m, mouse02.m

Mouse01.m function mouse01(action) % mouse01: 本例展示如何設定滑鼠事件的反應指令 MATLAB 程式設計入門篇 Mouse01.m function mouse01(action) % mouse01: 本例展示如何設定滑鼠事件的反應指令 if nargin==0, action='start'; end switch(action) case 'start' % 開啟圖形視窗 axis([0 1 0 1]); % 設定圖軸範圍 box on; % 將圖軸加上圖框 title('Click and drag your mouse in this window!'); % 設定滑鼠按鈕被按下時的反應指令為「mouse01 down」 set(gcf, 'WindowButtonDownFcn', 'mouse01 down'); case 'down' % 滑鼠按鈕被按下時的反應指令 % 設定滑鼠移動時的反應指令為「mouse01 move」 set(gcf, 'WindowButtonMotionFcn', 'mouse01 move'); % 設定滑鼠按鈕被釋放時的反應指令為「mouse01 up」 set(gcf, 'WindowButtonUpFcn', 'mouse01 up'); % 列印「Mouse down!」訊息 fprintf('Mouse down!\n');

currPt = get(gca, 'CurrentPoint'); x = currPt(1,1); y = currPt(1,2); MATLAB 程式設計入門篇 case 'move' % 滑鼠移動時的反應指令 currPt = get(gca, 'CurrentPoint'); x = currPt(1,1); y = currPt(1,2); line(x, y, 'marker', '.', 'EraseMode', 'xor'); % 列印「Mouse is moving!」訊息及滑鼠現在位置 fprintf('Mouse is moving! Current location = (%g, %g)\n', ... currPt(1,1), currPt(1,2)); case 'up' % 滑鼠按鈕被釋放時的反應指令 % 清除滑鼠移動時的反應指令 set(gcf, 'WindowButtonMotionFcn', ''); % 清除滑鼠按鈕被釋放時的反應指令 set(gcf, 'WindowButtonUpFcn', ''); % 列印「Mouse up!」訊息 fprintf('Mouse up!\n'); end

Mouse02.m 執行結果與Mouse01.m比較 只有X,Y軸範圍改變 其他幾乎完全一樣 但是程式的寫法更為結構化 MATLAB 程式設計入門篇 Mouse02.m 執行結果與Mouse01.m比較 只有X,Y軸範圍改變 其他幾乎完全一樣 但是程式的寫法更為結構化

Mouse02.m function mouse02(action) % mouse02: 本例展示如何設定滑鼠事件的反應指令 if nargin==0, action='start'; end switch(action) % 開啟圖形視窗 case 'start' axis([0 10 0 10]); % 設定圖軸範圍 box on; % 將圖軸加上圖框 title('Click and drag your mouse in this window!'); % 設定滑鼠按鈕被按下時的反應指令 set(gcf, 'WindowButtonDownFcn', sprintf('%s %s', mfilename, 'down')); case 'down' % 滑鼠按鈕被按下時的反應指令 % 設定滑鼠移動時的反應指令 set(gcf, 'WindowButtonMotionFcn', sprintf('%s %s', mfilename, 'move')); % 設定滑鼠按鈕被釋放時的反應指令為 set(gcf, 'WindowButtonUpFcn', sprintf('%s %s', mfilename, 'up')); % 列印「Mouse down!」訊息 fprintf('Mouse down!\n');

case 'move' % 滑鼠移動時的反應指令 fprintf('Mouse is moving! '); feval(mfilename, 'print'); % 列印「Mouse is moving!」訊息及滑鼠現在位置 case 'up' % 滑鼠按鈕被釋放時的反應指令 % 清除滑鼠移動時的反應指令 set(gcf, 'WindowButtonMotionFcn', ''); % 清除滑鼠按鈕被釋放時的反應指令 set(gcf, 'WindowButtonUpFcn', ''); % 列印「Mouse up!」訊息 fprintf('Mouse up!\n'); case 'print' currPt = get(gca, 'CurrentPoint'); x = currPt(1,1); y = currPt(1,2); line(x, y, 'marker', '.', 'EraseMode', 'xor'); fprintf('Current location = (%g, %g)\n', currPt(1,1), currPt(1,2)); end

showNearestPoint1.m function showNearestPoint1(action) MATLAB 程式設計入門篇 showNearestPoint1.m function showNearestPoint1(action) global h0 h1 h2 h3 h4 x1 y1 if nargin==0 action='b'; end x1=linspace(0,4*pi,30); y1=sin(x1); plot(x1,y1,'r-o') axis equal

showNearestPoint1.m (Continue) MATLAB 程式設計入門篇 showNearestPoint1.m (Continue) switch(action) case 'b' set(gcf,'windowbuttonmotionfcn','showNearestPoint1 a') case 'a' currPt=get(gca,'CurrentPoint'); x2=currPt(1,1); y2=currPt(1,2); Minx=sqrt((x2-x1).^2+(y2-y1).^2); n=find(Minx==min(Minx)); line(x1(n),y1(n),'marker','o') loction=[num2str(x1(n)) ',' num2str(y1(n))]; %text(x1(n),y1(n),loction);%顯示在點上 text(x2+.2,y2,loction);%顯示在游標旁 end

Basic GUI components

Uimenu01.m figure(1) f = uimenu('Label','Workspace'); uimenu(f,'Label','New Figure','Callback','figure'); uimenu(f,'Label','Save','Callback','save'); uimenu(f,'Label','Quit','Callback','exit',... 'Separator','on','Accelerator','Q'); figure('tag','uimenu','Resize','on','MenuBar','none',... 'Name','Teaching uimenu','NumberTitle','off','Position',[120,60,520,420]);

Uimenu02.m function uimenu02 ah1=findobj(0,'tag','SOLAR');close(ah1); figure('tag','SOLAR','Resize','on','MenuBar','none',... 'Name','Solar Engineering Fundamentals','NumberTitle','off','Position',[120,60,520,420]); fp0 = uimenu('Label','Edit'); uimenu(fp0,'Label','Select Julian day','Callback','solar0(''edit'')'); uimenu(fp0,'Label','Select hour and angle for rt','Callback','solar0(''edit1'')'); fp1 = uimenu('Label','Radiation'); uimenu(fp1,'Label','ET radiation on surface Normal to the Sun','Callback','solar0(''ET Radiation'')','Accelerator','N'); uimenu(fp1,'Label','ET solar Irradiance', 'Callback','solar0(''ET SolarIrradiance'')','Accelerator','I'); uimenu(fp1,'Label','ET daily insolation on Hori. surface','Callback','solar0(''ET Rad_Horizontal'')','Accelerator','H'); uimenu(fp1,'Label','ET solar Fraction','Callback','solar0(''ET SolarFraction'')','Separator','on','Accelerator','F'); uimenu(fp1,'Label','Unit Conversion', 'Callback','solar0(''Transfer'')','Accelerator','C');

Uimenu02.m (continue) fp2 = uimenu('Label','Time'); uimenu(fp2,'Label','Solar decLination','Callback','solar0(''declination'')','Accelerator','L'); uimenu(fp2,'Label','Equation Of time','Callback','solar0(''eqoftime'')','Accelerator','O'); uimenu(fp2,'Label','The analeMma','Callback','solar0(''Analemma'')','Separator','on','Accelerator','M'); uimenu(fp2,'Label','Animated Analemma','Callback','Analemma','Accelerator','A'); uimenu(fp2,'Label','Analemma Photo','Callback','solar0(''Analemma_photo'')','Accelerator','P','Separator','on'); fp3 = uimenu('Label','Angle'); uimenu(fp3,'Label','Sunrise/sunset hour','Callback','solar0(''sunrise_sunset'')'); uimenu(fp3,'Label','Sun-Surface Angle 1','Callback','solar0(''Sun-SurfaceAngle'')','Separator','on'); uimenu(fp3,'Label','Sun-Surface Angle 2','Callback','Sc_cal'); uimenu(fp3,'Label','Solar Altitute vs. Azimuth Angle','Callback','solar0(''AlvsAz'')','Separator','on'); uimenu(fp3,'Label','Top view of Sun''s track','Callback','solar0(''topview'')'); uimenu(fp3,'Label','Side view of Sun''s track','Callback','solar0(''sideview'')'); uimenu(fp3,'Label','Global view of Sun''s track','Callback','solar0(''globalview'')');

Uimenu02.m (continue) fp4 = uimenu('Label','Terrestrial'); uimenu(fp4,'Label','ET total radiation ratio(rt) on hori. surface','Callback','solar0(''run_rt'')','Accelerator','T'); uimenu(fp4,'Label','ET diffuse radiation ratio(rd) on hori. surface','Callback','solar0(''ratio_rd'')','Accelerator','D'); uimenu(fp4,'Label','ET Hourly ratio', 'Callback','solar0(''Rt&Rd'')','Separator','on','Accelerator','O'); fh = uimenu('Label','Misc.'); uimenu(fh,'Label','Save current Julian day as default','Callback','solar0(''savedefault'')'); uimenu(fh,'Label','Reset Julian day','Callback','solar0(''reset'')'); uimenu(fh,'Label','Close All','Callback','solar0(''cbAct1'')','Separator','on'); uimenu(fh,'Label','Close','Callback','close'); uimenu(fh,'Label','About Author','Callback','solar0(''author'')','Separator','on'); uimenu(fh,'Label','About Software','Callback','solar0(''version'')');

Uipanel01.m h = figure; hp = uipanel('Title','Main Panel','FontSize',12,... 'BackgroundColor','white',... 'Position',[.25 .1 .67 .67]); hsp1 = uipanel('Parent',hp,'Title','Subpanel_1','FontSize',12,... 'Position',[.4 .1 .5 .5]); hsp2 = uipanel('Parent',hp,'Title','Subpanel_2','FontSize',12,... 'Position',[.1 .6 .5 .3]); hbsp1 = uicontrol('Parent',hsp1,'String','Push here',... 'Position',[18 18 72 36]); hbsp2 = uicontrol('Parent',hsp1,'String','Also here',... 'Position',[18 56 72 36]);

Uibuttongroup01.m function uibuttongroup01 h = uibuttongroup('visible','off','Position',[0 0 .2 1]); leng=100; width=25; clc u0 = uicontrol('Style','Radio','String','Option 1',... 'pos',[10 350 leng width],'parent',h,'HandleVisibility','off'); u1 = uicontrol('Style','Radio','String','Option 2',... 'pos',[10 250 leng width],'parent',h,'HandleVisibility','off'); u2 = uicontrol('Style','Radio','String','Option 3',... 'pos',[10 150 leng width],'parent',h,'HandleVisibility','off'); set(h,'SelectionChangeFcn',@selcbk); set(h,'SelectedObject',[]); % No selection set(h,'Visible','on'); function selcbk(source,eventdata) %disp(source); % show the handle disp([eventdata.EventName,' ',... get(eventdata.OldValue,'String'),' --> ', ... get(eventdata.NewValue,'String')]); disp(get(get(source,'SelectedObject'),'String

Uicontextmenu.m % Define the context menu cmenu = uicontextmenu; % Define the line and associate it with the context menu hline = plot(1:10, 'UIContextMenu', cmenu); % Define callbacks for context menu items cb1 = ['set(hline, ''LineStyle'', ''--'')']; cb2 = ['set(hline, ''LineStyle'', '':'')']; cb3 = ['set(hline, ''LineStyle'', ''-'')']; % Define the context menu items item1 = uimenu(cmenu, 'Label', 'dashed', 'Callback', cb1); item2 = uimenu(cmenu, 'Label', 'dotted', 'Callback', cb2); item3 = uimenu(cmenu, 'Label', 'solid', 'Callback', cb3); % When the user extend-clicks on the line, the context menu appears.

Waitbar01.m h = waitbar(0,'Please wait...'); for i=1:100, % computation here % waitbar(i/100) end close(h)

Dialog Box

Errordlg01.m errordlg('File not found','File Error');

Helpdlg01.m helpdlg('Choose 10 points from the figure','Point Selection');

Warndlg01.m warndlg('Pressing OK will clear memory','!! Warning !!')

Listdlg01.m d = dir; str = {d.name}; [s,v] = listdlg('PromptString','Select a file:',... 'SelectionMode','single',... 'ListString',str)

Printdlg01.m printdlg printdlg(fig) printdlg('-crossplatform',fig) printdlg('-setup',fig)

Inputdlg01.m function inputdlg01 prompt='Enter your Department name'; answer = inputdlg(prompt); % answer is a cell array dlg_title=answer{1}; prompt='Enter your name'; answer = inputdlg(prompt,dlg_title); dlg_title=[dlg_title,' ',answer{1}]; num_lines=3; answer = inputdlg(prompt,dlg_title,num_lines); defAns={'方煒'}; % defAns specifies the default value to display for each prompt. % defAns must contain the same number of elements as prompt and all elements must be strings. answer = inputdlg(prompt,dlg_title,num_lines,defAns); defAns=answer; dlg_title=[dlg_title,' ',answer{1},' Resize is on']; Resize='on'; answer = inputdlg(prompt,dlg_title,num_lines,defAns,Resize);

questdlg01.m ButtonName=questdlg('What is your wish?', ... 'Genie Question', ... 'Food','Clothing','Money','Money'); switch ButtonName, case 'Food', disp('Food is delivered'); case 'Clothing', disp('The Emperor''s new clothes have arrived.') case 'Money', disp('A ton of money falls out the sky.'); end % switch

Uigetfile01.m function uigetfile01 [FileName,PathName] = uigetfile('*.m','Select the M-file');

Uigetfile02.m function uigetfile02 [filename, pathname] = ... uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');

Uigetfile03.m function uigetfile03 [filename, pathname] = uigetfile( ... {'*.m;*.fig;*.mat;*.mdl','MATLAB Files (*.m,*.fig,*.mat,*.mdl)'; '*.m', 'M-files (*.m)'; ... '*.fig','Figures (*.fig)'; ... '*.mat','MAT-files (*.mat)'; ... '*.mdl','Models (*.mdl)'; ... '*.*', 'All Files (*.*)'}, ... 'Pick a file');

Uigetfile04.m function uigetfile04 [filename, pathname] = uigetfile('*.m', 'Pick an M-file'); if isequal(filename,0) disp('User selected Cancel') else disp(['User selected', fullfile(pathname, filename)]) end

Uigetfile05.m function uigetfile05 % allow for multi_select [filename, pathname, filterindex] = uigetfile( ... { '*.mat','MAT-files (*.mat)'; ... '*.mdl','Models (*.mdl)'; ... '*.*', 'All Files (*.*)'}, ... 'Pick a file', ... 'MultiSelect', 'on');

Uigetdir01.m dname = uigetdir('C:\');

Uigetdir02.m uigetdir(matlabroot,'MATLAB Root Directory‘)

Uiputfile01.m [file,path] = uiputfile('animinit.m','Save file name');

Uiputfile02.m [file,path] = uiputfile('*.mat','Save Workspace As');

Uiputfile03.m [filename, pathname] = uiputfile( ... {'*.m';'*.mdl';'*.mat';'*.*'}, ... 'Save as');

Uiputfile04.m [filename, pathname, filterindex] = uiputfile( ... {'*.m;*.fig;*.mat;*.mdl','MATLAB Files (*.m,*.fig,*.mat,*.mdl)'; '*.m', 'M-files (*.m)'; ... '*.fig','Figures (*.fig)'; ... '*.mat','MAT-files (*.mat)'; ... '*.mdl','Models (*.mdl)'; ... '*.*', 'All Files (*.*)'}, ... 'Save as');

Uiputfile05.m [filename, pathname] = uigetfile('*.m', 'Pick an M-file'); if isequal(filename,0) | isequal(pathname,0) disp('User selected Cancel') else disp(['User selected',fullfile(pathname,filename)]) end

Uisetcolor01.m h_or_c=[1 0 0]; c = uisetcolor(h_or_c, 'DialogTitle') h_or_c=[0 1 0]; h_or_c=[0 0 1];

Uisetfont01.m h = text(.5,.5,'Figure Annotation'); uisetfont(h,'Update Font') c1 = uicontrol('Style', 'pushbutton', ... 'Position', [10 10 100 20], 'String', 'ABC'); % Create push button with string XYZ c2 = uicontrol('Style', 'pushbutton', ... 'Position', [10 50 100 20], 'String', 'XYZ'); % Display set font dialog box for c1, make selections, save to d d = uisetfont(c1); % Apply those settings to c2 set(c2, d)

More of ui_functions uisave uiopen uitoolbar uitoggletool uipushtool

Some Figure Properties

Some Figure Properties

Some Uicontrol Properties

Some Uicontrol Properties

Uicontextmenu properties