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