Transcript Introduction to Matlab
MATLAB Second Seminar
Previous lesson
Last lesson We learnt how to: • Interact with MATLAB in the MATLAB command window by typing commands at the command prompt.
• Define and use variables.
• Plot graphs It would be nice if you didn't have to manually type these commands at the command prompt whenever you want to use them.
Problem
• Write a script that asks for a temperature (in degrees Fahrenheit) • computes the equivalent temperature in degrees Celcius. • The script should keep running until no number is provided to convert. • use
isempty
Solution
while 1 % use of an infinite loop TinF = input( 'Temperature in F: ' ); % get input if isempty(TinF) % how to get out break end TinC = 5*(TinF - 32)/9; % conversion disp( ' ' ) disp([ ' ==> Temperature in C = ' ,num2str(TinC)]) end disp( ' ' )
Functions
• Functions describe subprograms –Take inputs, generate outputs –Have local variables (invisible in global workspace) •
Core MATLAB (Built-in) Functions
– sin, abs, exp, ...
Can’t be displayed on screen •
MATLAB-supplied M-file Functions
– mean, linspace, … Ca be displayed on screen •
User-created M-file Functions
Core MATLAB (Built-in) Functions
• •
Elementary built-in functions >> help elfun % a list of these functions sin exp abs round % Sine.
% Exponential.
% Absolute value. % Round towards nearest integer.
•
Special Math functions
• >>
help specfun lcm cart2sph % Least common multiple.
% Transform Cartesian to spherical % coordinates.
•
Special functions - toolboxes
• Each toolbox has a list of special functions that you can use
Structure of a Function M-file
Keyword: function Function Name (same as file name .m) Output Argument(s) Input Argument(s) Online Help MATLAB Code function y = mean(x) % MEAN Average or mean value.
% For vectors, MEAN(x) returns the mean value.
% For matrices, MEAN(x) is a row vector % containing the mean value of each column.
[m,n] = size(x); if m == 1 m = n; end y = sum(x)/m;
»
output_value = mean(input_value) Command Line Syntax
Multiple Input & Output Arguments
function
r = ourrank(X,tol)
% OURRANK Rank of a matrix
s = svd(X);
if end
(nargin == 1) tol = max(size(X))*s(1)*eps; r = sum(s > tol); function Multiple Input Arguments ( , ) Multiple Output Arguments [ , ] [mean,stdev] = ourstat(x)
% OURSTAT Mean & std. deviation
[m,n] = size(x); if m == 1 end m = n; mean = sum(x)/m; stdev = sqrt(sum(x.^2)/m – mean.^2);
» »
RANK = ourrank(rand(5),0.1); [MEAN,STDEV] = ourstat(1:99);
nargin, nargout, nargchk
•
nargin
– number of input arguments - Many of Matlab functions can be run with different number of input variables. •
nargout
– number of output arguments - efficiency •
nargchk
– check if number of input arguments is between some ‘low’ and ‘high’ values
Workspaces in MATLAB
• • •
MATLAB (or Base) Workspace:
– For command line and script file variables.
Function Workspaces:
– – Each function has its own workspace for local variables.
Name of Input/output variables can be either equal or different then the variable name in the calling workspace.
– Communicate to Function Workspace via inputs & outputs.
Global Workspace:
Global variables can be shared by multiple workspaces. (
Must be initialized in all relevant workspaces
.)
Initialize global variables in all relevant workspaces:
»
global variable_name Initialize global variables in the “source” workspace before referring to them from other workspaces.
Tips for using Global Variables
•
DON’T USE THEM
• If you absolutely must use them: – Avoid name conflicts
>>whos global
workspace %shows the contents of the global
>>clear global
%erases the variable from both local and global workspaces.
>>isglobal()
MATLAB Calling Priority
High variable built-in function subfunction private function MEX-file P-file M-file Low
» cos='This string.'; » cos(8) ans = r » clear cos » cos(8) ans = -0.1455
Visual Debugging
Select Workspace Set Auto Breakpoints Set Breakpoint Clear Breaks Step In Single Step Continue Quit Debugging
Example: Visual Debugging (2)
• Editor/Debugger opens the relevant file and identifies the line where the error occurred.
Current Location Current Workspace (Function)
Example: Visual Debugging (3)
Error message Debug Mode Access to Function’s Workspace
Some Useful MATLAB commands
• what • dir • ls • type test • delete test • cd a: • chdir a: • pwd • which test • why List all m-files in current directory List all files in current directory Same as dir Display test.m in command window Delete test.m
Change directory to a: Same as cd Show current directory Display current directory path to test.m
In case you ever needed a reason
Problem
• Write a
function
that asks for a temperature (in degrees Fahrenheit) • computes the equivalent temperature in degrees Celcius. • The function should give an
error massage
in case no number is provided to convert. • use
nargin.
Solution
function TinC=temp2(TinF) TinF = input( 'Temperature in F: ' ); % get input if nargin==0 % if there is no input disp( 'no temparture was entered' ); TinC=nan; else TinC = 5*(TinF - 32)/9; % conversion disp( ' ' ) disp([ ' ==> Temperature in C = ' ,num2str(TinC)]) end disp( ' ' )
MATLAB Input
To read files in
• if the file is an ascii table, use “load” • if the file is ascii but not a table, file I/O needs “fopen” and “fclose” • Reading in data from file using fopen depends on type of data (binary or text) • Default data type is “binary”
What Is GUIDE?
•
Graphical User Interface Design Environment
• provides a set of tools for creating graphical user interfaces (GUIs). • • GUIDE automatically generates an M-file that controls how the GUI operates. axes
Starting GUIDE
:
>> guide
OR: Push buttons Static text Pop-up menu
GUIDE Tools - The Layout Editor
• In the Quick Start dialog, select the
Blank GUI (Default)
template Component panel Drag to resize Layout area • Display names of components: File preferences Show names in component palette • Lay out your GUI by dragging components (panels, push buttons, pop-up menus, or axes) from the component palette, into the layout area
Using the Property Inspector
• Labeling the Buttons • Select
Property Inspector
from the
View
menu.
• Select button by clicking it. • Fill the name in the String field. Property Inspector Activate GUI
Programming a GUI
•
Callbacks
are functions that execute in response to some action by the user. • A typical action is clicking a push button. • You program the GUI by coding one or more callbacks for each of its components. • A GUI's callbacks are found in an M-file that GUIDE generates automatically.
• Callback template for a push button:
Handles structure
• Save the objects handles: handles.objectname
• Save global data – can be used outside the function.
• Example: popup menu: • Value – user choice of the popup menu