You are on page 1of 40

MATLAB

for Scientists and Engineers


Numerical Computing with .
Byoung-Jo CHOI, PhD University of Incheon

References

MATLAB Getting Started Guide, MathWorks

MATLAB User's Guide, MathWorks


Mastering MATLAB 7, Duane Hanselman and Bruce Littlefield, Pearson/Prentice Hall, 2005 Numerical Computing with MATLAB, Cleve Moler, MathWorks MATLAB7, , 2009 MATLAB: An Introduction with Applications, Amos Gilat, John Wiley & Sons, Inc., 2004

Graphics and GUIs with MATLAB, 3rd Ed, Patrick Marchand and O. Thomas Holland, Chapman & Hall/CRC, 2003

Script M-Files
Numerical Computing with . MATLAB for Scientists and Engineers

You will be able to


Write simple script m-files using the editor, Get user inputs and print the formatted results, Give explanations on your scripts using comments, Use cell mode for efficient coding and evaluation, Create a simple dialogue window, Save and Load data to/from MATLAB data file, text file as well as Excel files Use timer to perform repeated action

What is Script M-File

Text file comprised of a series of MATLAB commands The file name ends with .m, hence m-file. MATLAB interprets the lines in a script m-file. Example
calc_price.m

1: 2: 3: 4: 5:

% Calculate the total price nItem = input('Enter the number of items:'); uPrice = input('Enter the unit price:'); tPrice = nItem * uPrice; fprintf('The total price is %d.\n', tPrice );
5

Launching M-File Editor 1/3

'New M-File' Toolbar

Using Toolbar

Launching M-File Editor 2/3

'File New M-File' Menubar

Using Menubar

Launching M-File Editor 3/3

From Command History Window

Create m-file using the past commands

Popup Menu

Save and Run the Script

F5 to save the changes and run the entire script. *

Modified but Not Saved Yet!

Save Run All F5

Evaluate the Selected Script


F9 to run the selected script. Menubar: Text Evaluate Section

F9 to Run the Selection

Using Hot Key

10

Useful Functions for Scripts

For User Interactions


beep echo on
echo off

pause

pause(5) sec

waitforbuttonpress

Echo MATLAB commands in scripts.


Act silently. Default mode. number input

price = input('Enter the Unit Price: '); fprintf('The price is %d.\n', price * 20 );
name = input('Enter your name: ','s'); disp(name); keyboard

string input

Gives control to keyboard. Debug Mode Go into k>> mode Type R-E-T-U-R-N (5 characters) to exit.
11

Getting User Inputs 1/2

Getting user input from command line


greetings_input.m

% Get user inputs using command line name = input('Your name: ','s'); age = input('Your age: '); fprintf( ['Hello, %s!' ... ' You will be %d years old next year\n'], ... name, age+1); %% fprintf( 'Press key to continue..'); pause today1 = date; fprintf( '\nToday is %s.\n', today1 );

12

Getting User Inputs 2/2

Getting user input from dialog box


greetings_dlg.m %% Get user inputs using dialog prompt = {'Your name', 'Your age:'}; dlg_title = 'Greetings'; num_lines = 1; def = {'Sam','21'}; answer = inputdlg (prompt,dlg_title,num_lines,def); name = answer{1}; age = str2num (answer{2}); msg = sprintf( 'Hello, %s! You will be %d years old next year\n', name, age+1); h = msgbox (msg, 'Greetings'); uiwait (h) today1 = date; msg = sprintf( '\nToday is %s.\n', today1 ); h = msgbox (msg, 'Greetings');
13

Other Dialog Boxes

errordlg

helpdlg

questdlg

listdlg

warndlg

various_dlgs.m

14

Comments

Line comments
% % % % This m-file demonstrates filtering operation of FIR designed for removing a tone noise. Refer to Book1 for the exact algorithm Three 2-R plot will be drawn.

Block comments
%{ This m-file demonstrates filtering operation of FIR designed for removing a tone noise. Refer to Book1 for the exact algorithm }% Useful for commenting out a block of code temporarily for debugging.

15

Commenting Out

Ctrl+R for commenting out the selection Ctrl+T for un-commenting out the selection

16

Code Cells

Code blocks separated by %%


%% Initializing Data Structure Fs = 1440; % Sampling frequency Ts = 1 / Fs; % Sampling Time F0 = 2.4e3; % Carrier frequency %% Generate Time Domain Signal t = 0:Ts:2; s = sin(2*pi*F0*t);
%% Plot the Signal plot(t,s); Code Cell 1

Code Cell 2

Code Cell 3

17

Enabling Cell Mode

When enabled, cell control toolbar appears.

18

Evaluating the Cells

Run / Run & Go

Ctrl

Shift

Enter

Evaluate the cell and advance to the next cell. Evaluate the current cell.
+

Ctrl

Enter
19

Modify Parameter and Run the Cell


Increment / decrement a parameter by Multiply / divide a parameter by

plot_cosine.m

Change the value near the cursor and execute the cell.
20

Output Commands - disp

disp
disp(name of a variable) or disp('text as string')
disp_demo.m
n = [8 1 6] disp(n) % show the values of n disp('Magic Numbers') % just text disp(['The numbers are: ' num2str(n)]) % text and No's >> disp_demo n = 8 1 6 8 1 6 Magic Numbers The numbers are: 8

6
21

Output Commands fprintf 1/4

fprintf
fprintf('text') or fprintf('format',arg1, arg2,..)
fprintf_demo.m
n = [8 1 6]; fprintf( '%2d %2d %2d\n', n ); fprintf('Magic Numbers\nDo Exist!\n') % just text fprintf('The numbers are %d, %d and %d.\n', n) >> fprintf_demo 8 1 6 Magic Numbers Do Exist! The numbers are 8, 1 and 6. \n \t %d %x %f %*d new line horizontal tab decimal integer hexadecimal floating point field width, ..
22

Output Commands fprintf 2/4


fprintf understands vectors and matrices >> times2_table 2x multiplication table 2 x 1 = 2


times2_table.m
n = (1:9)'; times2 = [ 2*ones(9,1) n 2*n ]; fprintf('%d x %d = %2d\n', times2') 2 2 2 2 2 2 2 2 x x x x x x x x 2 3 4 5 6 7 8 9 = = = = = = = = 4 6 8 10 12 14 16 18

>> times2' ans = 2 2 1 2 2 4

2 3 6

2 4 8

2 5 10

2 6 12

2 7 14

2 8 16

2 9 18
23

Output Commands fprintf 3/4


advanced formatting field width and precision


format_demo.m
fprintf('%4d %d %5.1f %-5.1f %+5.1f\n', ... 2, 2, pi, pi, pi ); fprintf('%4d %d %5.1f %-5.1f %+5.1f\n', ... -2, -2, -pi, -pi, -pi ); >> format_demo 2 2 3.1 3.1 -2 -2 -3.1 -3.1

+3.1 -3.1

2 2

2 2

3 -

. 3

1 . 1

. -

1 3 . 1

+ 3 -

. 3

1 . 1
24

Output Commands fprintf 4/4


Writing into a text file fprintf() Steps: fopen()


times2_table_file.m
n = (1:9)'; times2 = [ 2*ones(9,1) n 2*n ]; fid = fopen('times2.txt','w'); fprintf(fid, '%d x %d = %2d\n', times2'); fclose(fid);

fclose()

times2.txt

25

MATLAB Data File


save and load into/from MATLAB data file save save mydata
save mydata var1 var2 ... save mydata var3 -append save ascii mydata.txt var1

load

load mydata load mydata.txt

26

Reading from Excel File 1/2

xlsread

Interactive range selection


a = xlsread('simple.xlsx',-1)

27

Reading from Excel File 2/2

xlsread

Read the entire excel file

a = xlsread('simple.xlsx')

Read a range of data from the excel file

a = xlsread('simple.xlsx','Sheet1','A3:B4')

28

Writing to Excel File

xlswrite

Write data into an Excel file.


xlswrite_demo.m

% Excel write demo % Write to the first sheet beginning from A1 xlswrite('magic.xlsx', magic(4)); % Write to a new sheet, 'Magic5', beginning from A1 xlswrite('magic.xlsx', magic(5), 'Magic5'); % Write to 'Sheet2' beginning from A1 xlswrite('magic.xlsx', magic(6), 2); % Write to 'Sheet3' beginning from B2 xlswrite('magic.xlsx', magic(7), 3, 'B2');

29

Timer

Repeated action using timer function


repeated_hello.m

t = timer('TimerFcn','say_hello','StartDelay',2, 'ExecutionMode','fixedDelay','Period', 3); start(t) stop(t) delete(t) fixedRate singleShot fixedSpacing

StartDelay
say_hello.m

Period

Period

Period

function say_hello load voices soundsc(hello,Fs)

Try timer_demo.m!!
30

Timer Demo

A man says 'Hello!' repeatedly.


timer_demo.m % Timer demonstration ans = inputdlg('Period in seconds', ... 'Greeting Man Timer',1,{'3'}); period = str2double(ans{1}); t = timer('TimerFcn','say_hello','StartDelay',1, ... 'ExecutionMode','fixedDelay','Period', period); start(t); %% Listen to the voice for a while. h = msgbox('Do you want to stop the timer?' , ... 'Stop Timer'); uiwait(h); stop(t) delete(t)

31

Start-up and Finish Script

User defined: startup.m, finish.m

MATLAB
matlabrc.m finish.m q='Sure?'; b=questdlg(q,'Exit Request','Yes','No','No'); switch b case 'No; quit cancel; end

startup.m pathdef.m format compact cd c:\work


edit startupsav.m

32

Exercise 1 Prime Factoring v1.0

Write a script file, 'ifactor.m', which gets a number from user and prints the number as a product of the prime factors. (Hint: factor)
>> ifactor Prime Factoring v1.0 Enter a positive integer:30 30 = 1 x 2 x 3 x 5 >> ifactor Prime Factoring v1.0 Enter a positive integer:40 40 = 1 x 2 x 2 x 2 x 5

33

Solution 1

Script
ifactor.m

Screenshot of running 'ifactor'

34

Exercise 2 Prime Factoring v1.1

Write a script file, 'ifactor2.m', which gets a number from user using a dialog box and prints the number as a product of the prime factors at a message box. [Hint: inputdlg(), msgbox()]

35

Solution 2

Script and Screenshot


ifactor2.m

36

Exercise 3 Mean and Variance

Write a script file, 'icalc.m', which prints the mean and the variance of the data in 'marks.xlsx'. [Hint: mean(), var()]

37

Solution 3

Script
icalc.m

Screenshot of running icalc

38

Notes

39

Notes

40