181 lines
7.3 KiB
Matlab
181 lines
7.3 KiB
Matlab
%% Lesson 1
|
|
|
|
%% Objective
|
|
% After this class, you should be able to:
|
|
%%
|
|
%
|
|
% * Know why you need MATLAB
|
|
% * Manuever around the MATLAB interface
|
|
% * Understand arithmetic and basic functions in MATLAB
|
|
% * Know how to make scalar, vector and matrix variables in MATLAB
|
|
% * Know how to perform matrix operations in MATLAB
|
|
%
|
|
%% MATLAB overview
|
|
% MATLAB (short for MATrix LABoratory) is a commonly used interactive
|
|
% software amongst engineers. As the name suggests, MATLAB organizes its
|
|
% data as matrices and is specially designed for matrix multiplication. In
|
|
% addition, it has a plethora of plugins and functions that engineers can
|
|
% use, such as machine learning, financial analysis, filter design etc.
|
|
%%
|
|
% In Cooper, MATLAB is widely used in electrical and computer engineering
|
|
% classes (signals, comm theory, machine learning, etc.), and is more broadly
|
|
% used for these purposes and others (physics simulations, controls design,
|
|
% etc.) across many engineering and scientific disciplines.
|
|
%
|
|
%% MATLAB Environment
|
|
%%% Command window
|
|
% The command window is sort of the equivalent of a terminal in Linux, or
|
|
% Cygwin in Windows. When you type a command into the command window, an
|
|
% operation performs. You can type a MATLAB command, such as 5+10, and the
|
|
% answer would be printed out. If a variable is not assigned to the
|
|
% command, the result would be stored in the variable ans automatically. If
|
|
% a semicolon is added at the end of the line, the result would be
|
|
% suppressed. You can clear the command window by typing clc. Moreover, you
|
|
% can also type command line commands in the command window, such as ls,
|
|
% pwd etc.
|
|
|
|
%%% Command history
|
|
% When you are playing around with different functions in MATLAB, you might
|
|
% want to trace back what functions you played with. At that time, you can
|
|
% press the up arrow, which would show you your command history.
|
|
|
|
%%% Workspace
|
|
% The workspace is where all the variables are stored. Each variable is
|
|
% displayed as a name value pair in the workspace. If the variable is a
|
|
% scalar, then the actual value would be shown. If it is a vector or matrix
|
|
% , then depending on the size of the vector / matrix, it would either be
|
|
% shown as its value or simply the size of the vector / array and its type.
|
|
% You can double click on the variables to investigate its actual value in
|
|
% a spreadsheet.
|
|
|
|
%%% Current Folder
|
|
% The current folder shows you where you are located at in MATLAB. If you
|
|
% execute the command pwd on the command window, it should show you the
|
|
% location of the current folder. You might find a time where you need to
|
|
% add a folder and link it to your current folder location. At that time,
|
|
% you can right click and select "Add to Path". To change current folder,
|
|
% you can execute the cd command on your command window
|
|
|
|
%%% Editor
|
|
% The editor is where you can write a script and execute it. All MATLAB
|
|
% scripts are saved as .m files. To execute a script, press the play button
|
|
% on top in EDITOR tab. When you are executing a script, you can use the
|
|
% semicolon to suppress the output of each line. To display a certain
|
|
% variable at an arbitrary location in your script, you can use disp()
|
|
% function.
|
|
|
|
%% Arithmetic and Basic functions
|
|
|
|
%% Basic Operations
|
|
5+10; % Addition
|
|
ans; % Prints out previous answer
|
|
25-7; % Subtraction
|
|
24*86; % Multiplication
|
|
123.456*78.90; % Multiplication
|
|
145/123; % Division
|
|
2^5; % Exponential
|
|
log10(1000); % Logarithm base 10
|
|
log(exp(5)); % Natural logarithm
|
|
sqrt(625); % Square root
|
|
sin(pi); % sine function
|
|
asin(0); % arc sine function
|
|
1e5; % e5 multiplies 1 by 10^5
|
|
1e-2; % e-2 multiplies 1 by 10^-2
|
|
|
|
%% Complex Numbers
|
|
2+1i; % equivalently, 2+i
|
|
2+1j; % equivalently, 2+j
|
|
(2+2i)*(3+4j);
|
|
|
|
%% Special Numbers
|
|
pi;
|
|
exp(2*pi*j);
|
|
inf;
|
|
|
|
%% Complex number operations
|
|
conj(2+i); % complex conjugate
|
|
real(2+i); % real part
|
|
imag(2+i); % imaginary part
|
|
abs(2+i); % magnitude/absolute value
|
|
angle(2+i); % angle or phase
|
|
|
|
%% Variables
|
|
% In matlab, there are 3 (main) different kinds of variables
|
|
%%
|
|
% * Scalar - A scalar appears as 1-by-1 and it is a single real or complex
|
|
% number
|
|
% * Vector - A vector is 1-by-n or n-by-1, and appears in MATLAB as a row or
|
|
% column of complex numbers
|
|
% * Matrix - A matrix is m-by-n, and appears in MATLAB as, essentially, a
|
|
% matrix. A matrix is a 2-D array
|
|
% If you want to see what variables you've declared, either look in the
|
|
% Workspace section of the MATLAB window, or type:
|
|
who;
|
|
whos;
|
|
|
|
%% Scalar Variables
|
|
a = 5;
|
|
b = 10;
|
|
c = a+b;
|
|
z1 = 2+j;
|
|
z2 = 3+4j;
|
|
z = z1*z2;
|
|
|
|
%% Vector Variables
|
|
x = [1 2+3j 2.718 pi cos(pi)]; % row vector
|
|
x = [1, 2+3j, 2.718, pi, cos(pi)]; % same thing with commas
|
|
xT = transpose(x); % now you created the column vector
|
|
xT = x.'; % regular tranpose
|
|
xT = x'; % complex tranpose
|
|
y = [1 ; 2.5 ; 3.2 ; 4*pi; cos(pi)]; % column vector
|
|
xlen = length(x); % length of row/col vector
|
|
ylen = length(y); % same value as length(x)!
|
|
|
|
%% BE CAREFUL!
|
|
% The following two vectors produces vectors of different sizes, the reason
|
|
% being linspace(x1, x2, n) creates n evenly spaced points between x1 and
|
|
% x2 , with the value of interval (x2-x1)/(n+1), while the colon operator
|
|
% (used in the form of x1:i:x2) creates an array with [x1, x1+i, x1+2i...,
|
|
% x1+mi], where m = (x2-x1)/i. Hence when creating a vector with the colon
|
|
% operator or linspace, make sure you know when to use it. In conclusion,
|
|
% linspace works with number of points, whereas the colon operator works
|
|
% with increments.
|
|
|
|
%%
|
|
v1 = linspace(-5,5,10);
|
|
v2 = -5:1:5;
|
|
|
|
%% Matrix Variables
|
|
A = [1 2 3; 4 5 6; 7 8 9]; % basic construction of matrix
|
|
B = repmat(A,2,1); % you concatenated A one above the other
|
|
C = [A; A]; % same as above
|
|
C1 = transpose(C); % now you transposed C!
|
|
C2 = C.'; % still transposed! if it is only C' then it is
|
|
% conjugate transpose
|
|
size(C); % Confirm that they are tranposes of each other
|
|
size(C1);
|
|
size(C1,1); % You get the dimension you want!
|
|
eye(3); % Create identity matrix
|
|
speye(30000000); % Create sparse identity matrix
|
|
D = ones(50,60); % D is 50-by-60 ones
|
|
E = zeros(40); % E is 40-by-40 zeros
|
|
|
|
%% Matrix Operations
|
|
B+C; % addition
|
|
B-C; % subtraction
|
|
4*B + C/5; % multiplication and division with a constant
|
|
A+ones(size(A)); % elementwise addition with a constant
|
|
B*C'; % matrix multiplication
|
|
B.*C; % elementwise multiplication
|
|
B.^3; % elementwise exponentiation! note: do not use B^3
|
|
2*(eye(3))^3; % only possible with square matrices
|
|
|
|
%% Documentation
|
|
% If you don't know how to use a function, look it up using one of the
|
|
% following commands. help opens a textual documentation in the
|
|
% command window (just like Linux's man command), while doc will open a
|
|
% new window with graphical documentation just like their website. The
|
|
% MATLAB documentation website is also a great resource!
|
|
help clc;
|
|
doc size;
|