You are on page 1of 40

# MATLAB

## for Scientists and Engineers

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

References

## 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

Using Toolbar

10

## 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 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 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

% % % % 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.

%{ 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

18

## Run / Run & Go

Ctrl

Shift

Enter

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

Ctrl

Enter
19

## 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

## 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

2 3 6

2 4 8

2 5 10

2 6 12

2 7 14

2 8 16

2 9 18
23

## 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

## 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

26

27

28

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_hello.m

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

## 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

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

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

38

Notes

39

Notes

40