%% Change Octave prompt PS1('>> '); %% Change working directory in windows example: cd 'c:/path/to/desired/directory name' %% Note that it uses normal slashes and does not use escape characters for the empty spaces.

%% variable assignment a = 3; % semicolon suppresses output b = 'hi'; c = 3>=1;

% Displaying them: a = pi disp(a) disp(sprintf('2 decimals: %0.2f', a)) disp(sprintf('6 decimals: %0.6f', a)) format long a format short a

%% vectors and matrices A = [12; 34; 56]

v = [123] v = [1; 2; 3] v = [1:0.1:2] % from 1 to 2, with stepsize of 0.1. Useful for plot axes v = 1:6% from 1 to 6, assumes stepsize of 1 (row vector)

C = 2 * ones(2,3) % same as C = [2 2 2; 2 2 2] w = ones(1,3) % 1x3 vector of ones w = zeros(1,3) w = rand(1,3) % drawn from a uniform distribution w = randn(1,3) % drawn from a normal distribution (mean=0, var=1) w = -6 + sqrt(10)*(randn(1,10000)); % (mean = -6, var = 10) - note: add the semicolon hist(w) % plot histogram using 10 bins (default) hist(w,50) % plot histogram using 50 bins % note: if hist() crashes, try "graphics_toolkit('gnu_plot')"

I = eye(4) % 4x4 identity matrix

% help function help eye help rand help help

Moving Data Around

Dimensions

1 2 3 4 5

%% dimensions sz = size(A) % 1x2 matrix: [(number of rows) (number of columns)] size(A,1) % number of rows size(A,2) % number of cols length(v) % size of longest dimension

Loading data

1 2 3 4 5 6 7 8 9 10 11 12 13

%% loading data pwd % show current directory (current path) cd 'C:\Users\ang\Octave files'% change directory ls % list files in current directory load q1y.dat % alternatively, load('q1y.dat') load q1x.dat who % list variables in workspace whos % list variables in workspace (detailed view) clear q1y % clear w/ no argt clears all v = q1x(1:10); % first 10 elements of q1x (counts down the columns) save hello.mat v; % save variable v into file hello.mat save hello.txt v -ascii; % save as ascii % fopen, fread, fprintf, fscanf also work [[not needed in class]]

Indexing

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

%% indexing A(3,2) % indexing is (row,col) A(2,:) % get the 2nd row. % ":" means every element along that dimension A(:,2) % get the 2nd col A([13],:) % print all the elements of rows 1 and 3

A(:,2) = [10; 11; 12] % change second column A = [A, [100; 101; 102]]; % append column vec A(:) % Select all elements as a column vector.

% Putting data together A = [12; 34; 56] B = [1112; 1314; 1516] % same dims as A C = [A B] or [A,B]- concatenating A and B matrices side by side C = [A; B] - Concatenating A and B top and bottom

%% initialize variables A = [12;34;56] B = [1112;1314;1516] C = [11;22] v = [1;2;3]

%% matrix operations A * C % matrix multiplication A .* B % element-wise multiplication % A .* C or A * B gives error - wrong dimensions A .^ 2% element-wise square of each element in A 1./v % element-wise reciprocal log(v) % functions like this operate element-wise on vecs or matrices exp(v) abs(v)

% max (or min) a = [11520.5] val = max(a) [val,ind] = max(a) % val - maximum element of the vector a and index - index value where maximum occur val = max(A) % if A is matrix, returns max from each column

% find a < 3 find(a < 3) A = magic(3) [r,c] = find(A>=7) % row, column indices for values matching comparison

% sum, prod sum(a) prod(a) floor(a) % or ceil(a) max(rand(3),rand(3)) max(A,[],1) - maximum along columns(defaults to columns - max(A,[])) max(A,[],2) - maximum along rows A = magic(9) sum(A,1) sum(A,2) sum(sum( A .* eye(9) )) sum(sum( A .* flipud(eye(9)) ))

Vectorization is the process of taking code that relies on loops and converting it into matrix operations. It is more efficient, more elegant, and more concise.

As an example, let's compute our prediction from a hypothesis. Theta is the vector of fields for the hypothesis and x is a vector of variables.

If you recall the definition multiplying vectors, you'll see that this one operation does the element-wise multiplication and overall sum in a very concise notation.

Working on and Submitting Programming Exercises

Download and extract the assignment's zip file.

Edit the proper file 'a.m', where a is the name of the exercise you're working on.

Run octave and cd to the assignment's extracted directory

Run the 'submit' function and enter the assignment number, your email, and a password (found on the top of the "Programming Exercises" page on coursera)