Академический Документы
Профессиональный Документы
Культура Документы
6.094
Introduction to Programming in MATLAB (1) Symbolic Math
(2) Simulink
(3) File I/O
Lecture 5: Symbolics, Simulink®, (4) Graphical User Interfaces
File I/O, Building GUIs
Instructor:
Danilo Šüepanoviü
IAP 2010
• Don’t do nasty calculations by hand! • Symbolic variables are a type, like double or char
• Symbolics vs. Numerics
• To make symbolic variables, use sym
Advantages Disadvantages » a=sym('1/3');
» b=sym('4/5');
Symbolic •Analytical solutions •Sometimes can't be » mat=sym([1 2;3 4]);
•Lets you intuit solved ¾ fractions remain as fractions
things about •Can be overly » c=sym('c','positive');
solution form complicated
¾ can add tags to narrow down scope
Numeric •Always get a •Hard to extract a
¾ see help sym for a list of tags
solution deeper understanding
•Can make solutions •Num. methods
accurate sometimes fail • Or use syms
•Easy to code •Can take a while to » syms x y real
compute ¾ shorthand for x=sym('x','real'); y=sym('y','real');
Symbolic Expressions Cleaning up Symbolic Statements
• We can do symbolics with matrices too • The equation of a circle of radius r centered at (a,b) is
given by: ( x − a ) + ( y − b ) = r
2 2 2
» mat=sym('[a b;c d]');
• Use solve to solve this equation for x and then for y
» mat2=mat*[1 3;4 -2];
¾ compute the product
» d=det(mat)
¾ compute the determinant
» i=inv(mat)
¾ find the inverse • It’s always annoying to integrate by parts. Use int to do
the following integral symbolically and then compute the
• You can access symbolic matrix elements as before value by substituting 0 for a and 2 for b: b
³ xe dx
x
» i(1,2)
a
Exercise: Symbolics Outline
• Use solve to solve this equation for x and then for y (2) Simulink
(3) File I/O
» syms a b r x y
» solve('(x-a)^2+(y-b)^2=r^2','x') (4) Graphical User Interfaces
» solve('(x-a)^2+(y-b)^2=r^2','y')
a
» Q=int(x*exp(x),a,b)
» subs(Q,{a,b},{0,2})
• Create a new
Simulink file,
similar to how
you make a new
script
Courtesy of The MathWorks, Inc. Used with permission. Courtesy of The MathWorks, Inc. Used with permission.
Exercise: Simulink Exercise: Simulink
• The diagram should look like this. To change the transfer
• Take your white noise signal, and split it into high function parameters, double click the blocks and specify
frequency and low frequency components. Use the the numerator and denominator as polynomials in s
Transfer Function block from Continuous and use these (remember how we defined polynomial vectors before)
transfer functions:
1 0.1s
LP = HP =
0.1s + 1 0.1s + 1
• Hook up scopes to the input and the two outputs
• Send the two outputs to the workspace by using the to
Workspace block from Sink
• MATLAB is a great environment for processing data. If you • With importdata, you can also specify delimiters. For
have a text file with some data: example, for comma separated values, use:
» a=importdata('filename', ', ');
¾ The second argument tells matlab that the tokens of
interest are separated by commas or spaces
• To import data from files on your hard drive, use • importdata is very robust, but sometimes it can have
importdata trouble. To read files with more control, use fscanf (similar
» a=importdata('textFile.txt'); to C/Java), textread, textscan. See help or doc for
information on how to use these functions
¾ a is a struct with data, textdata, and colheaders fields
» x=a.data;
» names=a.colheaders;
Writing Excel Files Reading Excel Files
• MATLAB contains specific functions for reading and writing • Reading excel files is equally easy
Microsoft Excel files • To read from an Excel file, use xlsread
• To write a matrix to an Excel file, use xlswrite » [num,txt,raw]=xlsread('randomNumbers.xls');
» [s,m]=xlswrite('randomNumbers',rand(10,4),... ¾ Reads the first sheet
'Sheet1'); % we specify the sheet name ¾ num contains numbers, txt contains strings, raw is the
• You can also write a cell array if you have mixed data: entire cell array containing everything
» C={'hello','goodbye';10,-2;-3,4}; » [num,txt,raw]=xlsread('randomNumbers.xls',...
» [s,m]=xlswrite('randomNumbers',C,'mixedData'); 'mixedData');
¾ Reads the mixedData sheet
» [num,txt,raw]=xlsread('randomNumbers.xls',-1);
• s and m contain the 'success' and 'message' output of the
write command ¾ Opens the file in an Excel window and lets you click on the
data you want!
• See doc xlswrite for more usage options
• See doc xlsread for even more fancy options
Courtesy of The MathWorks, Inc. Used with permission. Courtesy of The MathWorks, Inc. Used with permission.
Courtesy of The MathWorks, Inc. Used with permission. Courtesy of The MathWorks, Inc. Used with permission.
Running the GUI Outline
• To run the GUI, just type its name in the command window
and the GUI will pop up. The debugger is really helpful for
writing GUIs because it lets you see inside the GUI (1) Symbolic Math
(2) Simulink
(3) File I/O
(4) Graphical User Interfaces