Embedded Communications in Wireless Sensor Network

Download Report

Transcript Embedded Communications in Wireless Sensor Network

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
2
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
4
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
6
Launching M-File Editor 2/3

'File – New – M-File' Menubar
Using Menubar
7
Launching M-File Editor 3/3

From Command History Window

Create m-file using the past commands
Popup Menu
8
Save and Run the Script

F5 to save the changes and
run the entire script.
*
Modified but
Not Saved Yet!
Save
Run All
F5
9
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
pause
pause(5) sec
waitforbuttonpress
echo on
Echo MATLAB commands in scripts.
echo off
Act silently. Default mode.
price = input('Enter the Unit Price: ');
fprintf('The price is %d.\n', price * 20 );
name = input('Enter your name: ','s');
disp(name);
keyboard
number input
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
1
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')
>> times2'
ans =
2
2
1
2
2
4
2
3
6
2
4
8
2
5
10
2
6
12
2
2
2
2
2
2
2
2
x
x
x
x
x
x
x
x
2
7
14
2
3
4
5
6
7
8
9
=
=
=
=
=
=
=
=
4
6
8
10
12
14
16
18
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
-
2
2
2
-
2
+3.1
-3.1
3
.
1
-
3
.
3
1
.
1
-
3
.
1
+ 3
.
1
-
3
.
1
24
Output Commands – fprintf 4/4


Writing into a text file
fprintf()
Steps: fopen()
fclose()
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);
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)
fixedRate singleShot fixedSpacing
delete(t)
StartDelay
say_hello.m
Period
function say_hello
load voices
soundsc(hello,Fs)
Period
Period
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
startup.m
pathdef.m
format compact
cd c:\work
finish.m
q='Sure?';
b=questdlg(q,'Exit
Request','Yes','No','No');
switch b
case 'No;
quit cancel;
end
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