User Tools

Site Tools


gibson:teaching:fall-2014:math445:lecture2-diary

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

gibson:teaching:fall-2014:math445:lecture2-diary [2014/09/04 07:21] (current)
gibson created
Line 1: Line 1:
 +<​code> ​
 +% ==================================================================
 +% 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
 +</​code>​
gibson/teaching/fall-2014/math445/lecture2-diary.txt ยท Last modified: 2014/09/04 07:21 by gibson