Matlab Discussion Section Slides

advertisement
CS 175 Project in AI
Discussion -- matlab
Yutian Chen
help

help
help help

Documentation
doc help
Useful functions
who, whos
size, length
clear
clc
sum, max, min
Matrix Allocation

Enter an explicit list of elements.


A = [1 2 3; 4 5 6]
Colon operator
A = 10:-2:1

Generate matrices using built-in functions.
linspace, logspace, zeros, ones, eye, rand
Tips: Pre-allocation avoids reallocation of
matrices
Matrix Indexing

Subscripted Indexing (1-based)
A = [11 14 17; ...
% use “…” to continue on the next line
12 15 18; ...
13 16 19];
A(2:3,2)

Linear Indexing (matrix is store by column)
A([3,1,8])

Logical Indexing
A(logical([0 0 1 0 1]))
end, find
exercise:
last column of A
A(:,end)
diagonal of A
diag(A) or A(logical(eye(size(A))))
Find all the elements greater than 15
A(A>15)
Matrix Manipulation

Transpose A=A'

A(:)

repmat

reshape

[]

Cat
Matrix Manipulation cont.
exercise:
A=ones(2,2); B=rand(2); concatenate A and B along the 1st, 2nd, 3rd
dimension
1st: [A;B] or cat(1,A,B)
2nd: [A,B] or cat(2,A,B)
3rd: cat(3,A,B)
generate [1 1 1 1 1 2 2 2 2 2]
[ones(1,5),2*ones(1,5)] or reshape(repmat([1, 2],5,1),1,10)
transform A=[1 2; 3 4; 5 6; 7 8] to [1 2 3 4; 5 6 7 8]
A = reshape(A',4,2)'
Flow Control

if, else, switch

for loop
for i = [1 3 5 6]; H(i) = 1/i; end

while loop

continue

break
Logical operators

Element-wise operator

&, |, ~

<, <=, >, >=, ==, ~=
A=ones(2,2); B=A;
A==B
Some functions to reduce the results of matrix comparisons to
scalar conditions:
isequal, isempty, all, any
Save/Load

save
save
save a.mat
save a.mat x y
save('a.mat','x','y')

load
load a.mat
load a.mat x
load('a.mat','x')
Vectorization
For simplicity and speed
Vector dot product
A=[1 2 3 4 5]; B=[5 4 3 2 1];
p = 0;
for i=1:5
p=p+A(i)*B(i);
end

Or
p = A*B';

Or
p = sum(A.*B);
Vectorization cont.
Matrix multiplication
A=ones(5); B=eye(5);
p = zeros(size(A,1),size(B,2));
for i=1:size(p,1)
for j=1:size(p,2)
for k=1:size(p,2)
p=p+A(i,k)*B(k,j);
end
end
end

Or
p = A*B
Compare the
multiplication of two
100x100 matrix to
see the difference
Vectorization cont.

Exercise

A is a row vector, C=A(1)*A(2)+A(2)*A(3)+...+A(N1)*A(N);
C = A(1:end-1)*A(2:end) '

polynomial evaluation: a0+a1*x+...+ak*x^k
y = A*2.^(0:k) ';

sigmoid(x,W,b) (x: dims:1xD, W: 1xD, b:1x1)
1/(1+exp( -(W*x‘+b) ))

sigmoid(x,W,b) (x: NxD, W: 1xD, b:1x1)
1./(1+exp( -(W*x‘+b) ))
Vectorization cont.

Exercise

weight update in logistic regression

y is a Nx1 row vector of labels

x is a NxD matrix of data

W is a 1XD row vector
W = W + rate * x' *(y-1./(1+exp( -(W*x' +b) )))
(Be careful to match the inner dimension of matrix multiplications)
Plot

plot
plot(x,y); plot(y); plot(A)
line type, color, symbol
title, xlabel, legend, xlim, hold on/off
log-scale: semilogx, semilogy, loglog

hist, bar, stem, surf, scatter
Script/Function

Script
a batch of commands grouped in a .m file
share the same workspace with the command line

Function
keyword: function
input, output
function name determined by the file name
useful functions: nargin, nargout, exist

Debugging
Download