Lecture 2 Scip, Matrix handling HA, 24.10.2018
Contents
Extracring and decomposing (parts of) matrices
clear % Remove variables from workspace (memory) clc % Clear screen close all % Close grapics windows format compact % Compress away extra blank lines from results. A=reshape(1:6,2,3),B=ones(2,2),C=diag(1:3)
A =
     1     3     5
     2     4     6
B =
     1     1
     1     1
C =
     1     0     0
     0     2     0
     0     0     3
Side by side
 side_by_side=[A B]
 % Stack vertically:
 pile =  [A;C]
side_by_side =
     1     3     5     1     1
     2     4     6     1     1
pile =
     1     3     5
     2     4     6
     1     0     0
     0     2     0
     0     0     3
Link to indexing (works after "publish")
Some Finish explanation of lofical indexing (can ignore now)
Indexing vectors with vector indices
clear close all format compact clc
v = [13 5 9 -1]
v =
    13     5     9    -1
v(2)              % 2. element         -> 5
ans =
     5
v([1 3 end])      % elements 1 3 end   -> 13 9 -1
ans =
    13     9    -1
v(1:3)            % elements 1 2 3     -> 13 5 9
ans =
    13     5     9
v(1:3)=-[1 2 3] % Update part chosen part of vector. % % Same size or scalar
v =
    -1    -2    -3    -1
v([1 1 end-1 2 1]) % Repetition and changing order allowed.
ans =
    -1    -1    -3    -2    -1
v([1 3])=NaN % A form of scalar expansion % NaN -2.0000 NaN -1
v = NaN -2 NaN -1
Indexing matrices
clc
clear
format compact
A=[3 33;9 8]
A =
     3    33
     9     8
A(1,1) % --> 3 A(1,2) % --> 33
ans =
     3
ans =
    33
Linear indexing, "slicing" matrix into a long column A(:)
%{ Can index with one index running along columns. This is called linear indexing. Think of A "queued" along columns, i.e. A(:) %} A(3) % <--> A(2,1) [A(3) A(1,2)] sub2ind([2,2],1,2) %
ans =
    33
ans =
    33    33
ans =
     3
Some more cases of indexing matrices:
A = magic(6)
A =
    35     1     6    26    19    24
     3    32     7    21    23    25
    31     9     2    22    27    20
     8    28    33    17    10    15
    30     5    34    12    14    16
     4    36    29    13    18    11
B = A(3,5)
B =
    27
C = A([1,2,3],4)        % Sarakkeen 4 alkiot riveilta 1 2 3
C =
    26
    21
    22
D = A(4,[1,1,1])        % [A(4,1) A(4,1) A(4,1)]
D =
     8     8     8
E = A([2,5],[3,1])      % Rivien 2 5 sarakkeet 3 1
E =
     7     3
    34    30
F = A(:,4)              % Koko 4. sarake
F =
    26
    21
    22
    17
    12
    13
G = A(4,:)              % Koko 4. rivi
G =
     8    28    33    17    10    15
H = A(:)               % Columns of A "sliced" into one long column:
size(H)
H =
    35
     3
    31
     8
    30
     4
     1
    32
     9
    28
     5
    36
     6
     7
     2
    33
    34
    29
    26
    21
    22
    17
    12
    13
    19
    23
    27
    10
    14
    18
    24
    25
    20
    15
    16
    11
ans =
    36     1
H' % Show transposed to save display space. A(1:3,[2 3 end-1])=NaN % Update as before with vectors. %
ans =
  Columns 1 through 13
    35     3    31     8    30     4     1    32     9    28     5    36     6
  Columns 14 through 26
     7     2    33    34    29    26    21    22    17    12    13    19    23
  Columns 27 through 36
    27    10    14    18    24    25    20    15    16    11
A =
    35   NaN   NaN    26   NaN    24
     3   NaN   NaN    21   NaN    25
    31   NaN   NaN    22   NaN    20
     8    28    33    17    10    15
    30     5    34    12    14    16
     4    36    29    13    18    11