% ================================================================== % A few more matlab basics % format: change appearance of output % 'format long' makes matlab print in full (16 digit) precision pi ans = 3.1416 format long pi ans = 3.141592653589793 % Special numbers: inf, NaN, i, j % inf is infinity, for example 1 divided by 0 1/0 ans = Inf % NaN is 'not a number', for example 0 divided by 0, which is undefined 0/0 ans = NaN % i and j are the unit imaginary numbers, the square root of -1 i ans = 0.000000000000000 + 1.000000000000000i j ans = 0.000000000000000 + 1.000000000000000i i^2 ans = -1 % most common functions have extensions to the set of complex numbers cos(2+3*i) ans = -4.189625690968807 - 9.109227893755337i % caution: if you use a function name for a variable name, you won't be able % to access the function until you clear the variable rand = rand() rand = 0.090750827467831 rand() ans = 0.090750827467831 rand() ans = 0.090750827467831 rand() ans = 0.090750827467831 % hmmm, why do I keep getting the same random number? % because you're access a variable named 'rand' and not the function 'rand()", silly! whos Name Size Bytes Class Attributes ans 1x1 16 double complex rand 1x1 8 double x 10000x1 80000 double % you need to run 'clear rand' to release the variable clear rand whos Name Size Bytes Class Attributes ans 1x6 12 char x 10000x1 80000 double % now you can access the function again rand() ans = 0.546980919566268 rand() ans = 0.895124242734885 % characters: one last data type, along with double, int32, uint32, ..., and logical % you can assign a set fo characters to a variable as follows f = 'foo' f = foo whos Name Size Bytes Class Attributes ans 1x1 8 double f 1x3 6 char x 10000x1 80000 double % ==================================================================== % Vectors and matrices % Construct a row vector by explicitly listing its elements, separated by commas x = [4, 5, 9] x = 4 5 9 % Construct a column vector by explicitly listing its elements, separated by semicolons x = [4; 5; 9] x = 4 5 9 % To access an element (component) of the vector, use parentheses % x(i) accesses ith component of x x(1) ans = 4 x(2) ans = 5 x(3) ans = 9 x(4) {Index exceeds matrix dimensions.} % error message % Transpose: the transpose operator ' (apostrophe) turns a row vector into a col vec x x = 4 5 9 y = x' y = 4 5 9 y' ans = 4 5 9 % Matlab colon syntax % m:n means m through n by intervals of 1 1:4 ans = 1 2 3 4 1:10 ans = 1 2 3 4 5 6 7 8 9 10 % x:inc:y means x through y by steps of inc 0:0.2:1 % 0 through 1 by steps of 0.2 ans = 0 0.2000 0.4000 0.6000 0.8000 1.0000 % use this functionality to produce plot of sin(x) for 0 <= x < pi x = 0:0.1:pi; size(x) ans = 1 32 plot(x,sin(x),'r-') plot(x,sin(x),'r.-') % linspace: another way to get a vector of uniformly spaced points x = linspace(0,pi,100); % 100 uniformly distributed points btwn 0 and pi size(x) ans = 1 100 plot(x,sin(x),'r.-') x(1) ans = 0 x(2) ans = 0.0317 x(3) ans = 0.0635 x(4) ans = 0.0952 % subindexing: how to extract a subset of the components of a vector % observe that x is a vector of dimension 100 and look at the values of % its first four components size(x) ans = 1 100 x(1) ans = 0 x(2) ans = 0.0317 x(3) ans = 0.0635 x(4) ans = 0.0952 % recall that 1:4 means the vector [1, 2, 3, 4] 1:4 ans = 1 2 3 4 % extract components 1,2,3,4 of x using syntax x(1:4) x(1:4) ans = 0 0.0317 0.0635 0.0952 % extract components 1,2,3,4 of x using syntax x([1 2 3 4]), will give same thing x([1 2 3 4]) ans = 0 0.0317 0.0635 0.0952 % Some more demonstrations of subindexing x = 11:15 x = 11 12 13 14 15 x(1:3) ans = 11 12 13 x(3:5) ans = 13 14 15 x([5 4 3 2 1]) ans = 15 14 13 12 11 x(5:-1:1) ans = 15 14 13 12 11 x(randi(5,1,5)) ans = 15 14 14 13 12 % Vector arithmetic: vectors add elementwise x = [ 4 5 9] x = 4 5 9 y = [1 2 0] y = 1 2 0 x + y ans = 5 7 9 % scalar multiplication x x = 4 5 9 2*x ans = 8 10 18 % norm: measures the length of a vector norm(x) ans = 11.0454 x x = 4 5 9 sqrt(4^2 + 5^2 + 9^2) ans = 11.0454 % Matrices % create a matrix literally A = [4, 5, 9 ; 3, 2, 1 ; 0 , 6,4] A = 4 5 9 3 2 1 0 6 4 % Accessing components A = [4, 5, 9 ; 3, 2, 1 ; 0 , 6,4] A = 4 5 9 3 2 1 0 6 4 % A(i,j) gets elem in ith row and jth col A(1,1) ans = 4 A(1,2) ans = 5 A(3,1) ans = 0 % you can also assign a new number into a matrix element A(3,1) = 99 A = 4 5 9 3 2 1 99 6 4 % indexing with colons % A(:,j) returns jth column A(:,1) ans = 4 3 99 A(:,2) ans = 5 2 6 A(:,3) ans = 9 1 4 A A = 4 5 9 3 2 1 99 6 4 % A(i,:) returns ith row A(1,:) ans = 4 5 9 A(2,:) ans = 3 2 1 A(3,:) ans = 99 6 4 % A(i,m:n) returns ith row elements m through n A = 4 5 9 3 2 1 99 6 4 A(1,:) ans = 4 5 9 A(1,2:3) ans = 5 9