view minors.m @ 284:dae8c3a56f5e

Merged in operator_remake (pull request #2) Operator remake
author Jonatan Werpers <jonatan.werpers@it.uu.se>
date Mon, 12 Sep 2016 12:53:02 +0200
parents 0a881a3dc9a9
children eaf557023fbe
line wrap: on
line source

function [minor, sub] = minors(A)
    [n, m] = size(A);

    if n ~= m
        error('A must be square');
    end

    sub = {};
    ks = {};

    ind = 1:n;
    for k = 1:n
        C = nchoosek(ind,k);
        for i = 1:size(C,1)
            ks{end + 1} = k;
            sub{end + 1} = A(C(i,:),C(i,:));
        end
    end

    for i = 1:length(sub)
        fprintf('%d:\n', ks{i});
        disp(sub{i})

        minor(i) = det(sub{i});
    end
end


% A is positive semidefinite if all minors are non-negative
% A is negative semidefinite if all odd minors are non-positive and all even minors are non-negative