# channelflow.org

### Site Tools

gibson:teaching:fall-2014:math445:lecture2-diary
```
% ==================================================================
% 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```