Tag: MATLAB

  • Generating Permutation Matrices in Octave / Matlab

    Generating Permutation Matrices in Octave / Matlab

    I have been doing Gilbert Strang’s linear algebra assignments, some of which require you to write short scripts in MatLab, though I use GNU Octave (which is kind of like a free MatLab). I was trying out this problem:

    permutationMatricesTo solve this quickly, it would have been nice to have a function that would give a list of permutation matrices for every n-sized square matrix, but there was none in Octave, so I wrote a function permMatrices which creates a list of permutation matrices for a square matrix of size n.

    % function to generate permutation matrices given the size of the desired permutation matrices
    function x = permMatrices(n)
    x = zeros(n,n,factorial(n));
    permutations = perms(1:n);
    for i = 1:size(x,3)
    x(:,:,i) = eye(n)(permutations(i,:),:);
    end
    endfunction
    view raw permMatrices.m hosted with ❤ by GitHub

    For example:

    permMatrExample

    The MatLab / Octave code to solve this problem is shown below:

    % Solution for part (a)
    p = permMatrices(3);
    n = size(p,3); % number of permutation matrices
    v = zeros(n,1); % vector of zeros with dimension equalling number of permutation matrices
    % check for permutation matrices other than identity matrix with 3rd power equalling identity matrix
    for i = 1:n
    if p(:,:,i)^3 == eye(3)
    v(i,1) = 1;
    end
    end
    v(1,1) = 0; % exclude identity matrix
    ans1 = p(:,:,v == 1)
    % Solution for part (b)
    P = permMatrices(4);
    m = size(P,3); % number of permutation matrices
    t = zeros(m,1); % vector of zeros with dimension equalling number of permutation matrices
    % check for permutation matrices with 4th power equalling identity matrix
    for i = 1:m
    if P(:,:,i)^4 == eye(4)
    t(i,1) = 1;
    end
    end
    % print the permutation matrices
    ans2 = P(:,:,t == 0)
    view raw Section2_7_13.m hosted with ❤ by GitHub

    Output:

    op13a
    Output for 13(a)
    op13b
    Output for 13(b)

     

  • Getting Started

    Getting Started

    I have been searching for good MOOCs to get me started with R and Python programming languages. I’ve already begun the Johns Hopkins University Data Science Specialization on Coursera. It consists of 9 courses (including Data Scientist’s Toolbox, R programming, Getting and Cleaning Data, Exploratory Data Analysis, Reproducible Research, Statistical Inference, Regression Models, Practical Machine Learning and Developing Data Products), ending with a 7-week Capstone Project that I’m MOST excited about. I want to get there fast.

    The Capstone would consist of :
    • Building a predictive data model for analyzing large textual data sets
    • Cleaning real-world data and perform complex regressions
    • Creating visualizations to communicate data analyses
    • Building a final data product in collaboration with SwiftKey, award-winning developer of leading keyboard apps for smartphones

    I started with the R programming course where I found the programming assignments to be moderately difficult. They were good practice and also time-consuming for me since I haven’t yet gotten used to the R syntax, which is supposedly unintuitive. Anyway, I completed the course with distinction (90+ marks) scoring 95 on 100, losing 5 because I hadn’t familiarized myself with Git / GitHub. I did this course for a verified certificate, which cost me $29, and looks like this:

    Coursera rprog 2015

    I won’t be paying for any of the remaining courses though, but still will get a certificate of accomplishment for each course I pass. I have alredy begun with Getting and Cleaning Data and Data Scientist’s Toolbox.

    I checked today, and it seems Andrew Ng’s Machine Learning course has gone open to all and is self-paced. A lot of people have gone on to participate in Kaggle competitions with what they learnt in his course, so I’d like to experience it — even though it’s taught with Octave / MATLAB. My very short term goal is to start participating in these competitions ASAP.

    Kaggle Competitions

    I will be learning the basics of Git this week and along with that, about reading from MySQL, HDF5, the web and APIs. I intend to start reading Trevor Hastie’s highly recommended book, Introduction to Statistical Learning.

    ISL Cover 2

    [DOWNLOAD LINK TO THE BOOK]

    Meanwhile, I need to get started with Git and GitHub too, and I found a very useful blog by Kevin Markham and his short concise videos are great introductory material.

    Incidentally, I was in a dilemma whether to start with Hastie’s material or Andrew Ng’s course first. This is what Kevin had to say

    Hastie or Ng

    The only reason I have reservations against Andrew Ng’s course is that its instruction isn’t in R or Python. Also, CTO and co-founder of Kaggle, Ben Hamner mentions here how useful R and Python are vis-à-vis Matlab / Octave.

    Ben Hamner on Python R Matlab v2