spmin
Below is a demonstration of the features of the spmin function
Contents
clear; close all; clc;
Syntax
[minVal,minInd]=spmin(A,B,dim,nanflag,logicRelevant,nanOut);
Description
Examples
Create example matrix
i=[2 1 1 2 2 3 3 4 4 5 5 5 6 6 7 8];
j=[1 1 2 3 4 5 6 7 8 9 10 11 12 13 13 13];
s=[-1 3 1 2 -1 1 -2 5 5 -1 0 2 3 10 11 NaN];
siz=max([i(:);j(:)]+1)*ones(1,2);
A=sparse(i,j,s,siz(1),siz(2),numel(s));
A=A+A';
full(A) % View matrix
L=sparse(i,j,1,siz(1),siz(2),numel(s));
logicRelevant=(L+L')>0;
ans = Columns 1 through 13 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 -2 0 0 0 0 0 0 0 0 -1 0 0 0 0 5 5 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 2 0 0 0 0 -2 0 0 0 0 0 0 0 0 3 10 0 0 0 5 0 0 0 0 0 0 0 0 11 0 0 0 5 0 0 0 0 0 0 0 0 NaN 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 10 11 NaN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Column 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Compute minima allong a certain direction (while omit nan is default)
aMinRows=spmin(A,[],1); full(aMinRows) aMinColumns=spmin(A,[],2); full(aMinColumns)
ans = Columns 1 through 13 6 -1 -2 -1 -1 -2 5 5 -1 0 2 3 10 Column 14 0 ans = 6 -1 -2 -1 -1 -2 5 5 -1 0 2 3 10 0
Including nans
aMinRows=spmin(A,[],1,'includenan'); full(aMinRows) aMinColumns=spmin(A,[],2,'includenan'); full(aMinColumns)
ans = Columns 1 through 13 6 -1 -2 -1 -1 -2 5 NaN -1 0 2 3 NaN Column 14 0 ans = 6 -1 -2 -1 -1 -2 5 NaN -1 0 2 3 NaN 0
Computing minima across all desired relevant entries (including "relevant/real zeros")
aMinRows=spmin(A,[],1,'omitnan',logicRelevant); full(aMinRows) aMinColumns=spmin(A,[],2,'omitnan',logicRelevant); full(aMinColumns)
ans = Columns 1 through 13 0 -1 -2 -1 -1 -2 5 5 -1 0 2 3 10 Column 14 0 ans = 0 -1 -2 -1 -1 -2 5 5 -1 0 2 3 10 0
Computin minima across all desired relevant entries and output NaN where the sparse array only contains "non-relevant or non-real" zeros.
nanOut=1; aMinRows=spmin(A,[],1,'omitnan',logicRelevant,nanOut); full(aMinRows) aMinColumns=spmin(A,[],2,'omitnan',logicRelevant,nanOut); full(aMinColumns)
ans = Columns 1 through 13 0 -1 -2 -1 -1 -2 5 5 -1 0 2 3 10 Column 14 NaN ans = 0 -1 -2 -1 -1 -2 5 5 -1 0 2 3 10 NaN
GIBBON www.gibboncode.org
Kevin Mattheus Moerman, [email protected]
GIBBON footer text
License: https://github.com/gibbonCode/GIBBON/blob/master/LICENSE
GIBBON: The Geometry and Image-based Bioengineering add-On. A toolbox for image segmentation, image-based modeling, meshing, and finite element analysis.
Copyright (C) 2006-2021 Kevin Mattheus Moerman and the GIBBON contributors
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.