view minors.m @ 925:8f8f5ff23ead feature/utux2D

Bugfixes in LaplaceCurve
author Martin Almquist <malmquist@stanford.edu>
date Sun, 02 Dec 2018 18:04:33 -0800
parents eaf557023fbe
children
line wrap: on
line source

function [minor, sub] = minors(A, verbose)
    default_arg('verbose', true);
    [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)
        if verbose
            fprintf('%d:\n', ks{i});
            disp(sub{i})
        end

        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