برای اولین بار در ایران
بسته آموزشی کامل برنامه نویسی GUI در متلب
گروه برنامه نویسی ایران متلب یک بسته آموزشی برای علاقه مندان به برنامه نویسی رابط گرافیکی GUI تهیه کرده است. این بسته آموزشی یکی از ناب ترین بسته های آموزشی GUI در ایران می باشد.
اين بسته شامل موارد زير است :
1 – 31 مثال آماده GUI
2 – کتاب فارسی مقدماتی برنامه نویسی رابط گرافیکی GUI
20 صفحه
3- کتاب فارسی پیشرفته برنامه نویسی رابط گرافیکی GUI
64 صفحه
4 – کتاب
Learning to Program with MATLAB Building GUI Tools
سرفصل كتاب :
I MATLAB Programming 1
1 Getting Started 3
1.1 Running the MATLAB IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Manipulating windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 MATLAB variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Variable assignment statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Variable names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Variable workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Numbers and functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Writing simple MATLAB scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6 A few words about errors and debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7 Using the debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 14
2 Strings and Vectors 20
2.1 String basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Using the disp command to print a variable’s value . . . . . . . . . . . . . . . . . . . . . . . 22
2.3 Getting information from the user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 22
2.4 Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 23
2.5 Operations on vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6 Special vector functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Statistical functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7 Using rand and randi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3 Plotting 34
3.1 The plot command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Tabulating and plotting a simple function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3 Bar graphs and histograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4 Drawing several plots on one graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Multiple plots with a single plot command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Combining multiple plots with a hold command . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.5 Adding lines and text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4 Matrices 56
4.1 Entering and manipulating matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 Operations on matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.3 Solving linear systems: The backslash operator. . . . . . . . . . . . . . . . . . . . . .. . . . . . 65
Extended example: Solving circuit problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.4 Special matrix functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5 Control Flow Commands 75
5.1 Conditional execution: The if statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2 Logical expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Logical variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.4 forloops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.5 while loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.6 Other control flow commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Switch-case statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Break statement (not recommended) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6 Animation 94
6.1 Basic animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 95
6.2 Animating function plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 99
6.3 Kinematics of motion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 103
One-dimensional motion: Constant speed . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 103
Motion with constant acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Time-marching dynamics: Nonconstant force . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7 Writing Your Own MATLAB Functions 117
7.1 MATLAB function files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 118
Declaring MATLAB functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 119
7.2 Function inputs and outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
7.3 Local workspaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
7.4 Multiple outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
7.5 Function files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
7.6 Other functional forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 121
Subfunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Nested functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Anonymous functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
8 More MATLAB Data Classes and Structures 137
8.1 Cell arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.2 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8.3 Complex numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 140
8.4 Function handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 141
8.5 Other data classes and data structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
II Building GUI Tools 145
9 Building a Graphical User Interface 147
9.1 Getting started with GUIDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 147
Saving the GUI to a file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 150
9.2 Starting an action with a GUI element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 151
9.3 Communicating with GUI elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Building SliderTool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Communicating with GUI elements from the command line . . . . . . . . . . . . . . . 157
9.4 Synchronizing information with a GUI element . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.5 Key points from this chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
10 Transforming a MATLAB Program into a GUI Tool 165
10.1 Creating a GUI tool step by step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.2 Further GUI design considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
11 GUI Components 189
III Advanced Topics 207
12 More GUI Techniques 209
12.1 Waitbars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
12.2 File dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 211
Saving and loading data in .mat files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
A GUI interface to file names using uiputfile and uigetfile . . . . . . . . . . . . . . . . . 212
12.3 Reading and writing formatted text files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
12.4 The input dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
12.5 The question dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
12.6 Sharing application data between functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
12.7 Responding to keyboard input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
12.8 Making graphic objects interactive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Mouse-click response. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 223
Mouse events and object dragging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
12.9 Creating menus in GUIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
13 More Graphics 232
13.1 Logarithmic plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
13.2 Plotting functions on two axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 236
13.3 Plotting surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
13.4 Plotting vector fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
13.5 Working with images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Importing and manipulating bit-mapped images . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Placing images on surface objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 253
13.6 Rotating composite objects in three dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . 254
14 More Mathematics 260
14.1 Derivatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Derivatives of mathematical functions expressed as MATLAB functions. . . . . 261
Derivatives of tabulated functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 263
14.2 Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Integrating tabulated functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 265
Integrating mathematical functions expressed as MATLAB functions … . . . . 270
14.3 Zeros of a function of one variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
14.4 Function minimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 275
Finding a minimum of a function of one variable . . . . . . . . . . . . . . . . . . . . . . . . . 275
Multidimensional minimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 277
Fitting to an arbitrary function by multidimensional minimization . . . . .. . . . . 278
Solving simultaneous nonlinear equations by multidimensional
minimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
14.5 Solving ordinary differential equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
14.6 Eigenvalues and eigenvectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 289