cunique
Below is a demonstration of the features of the cunique function
Contents
clear; close all; clc;
Syntax
[A_uni,ind1,ind2,Ac]=cunique(A);
Description
The imx function provides a figure window based GUI for 3D image segmentation
Examples
Plot settings
fontSize=20;
Example 1: Getting unique entries and occurance counts for 1xN arrays
n=15; A=round(25*rand(1,n)); %Rounded random set in range 0-25 A(1)=A(end); %Force at least one double occurance for this example A %Get unique set and counts [A_uni,ind1,ind2,Ac]=cunique(A)
A = Columns 1 through 13 9 10 15 5 22 25 24 0 22 20 19 14 13 Columns 14 through 15 9 9 A_uni = 0 5 9 10 13 14 15 19 20 22 24 25 ind1 = 8 4 1 2 13 12 3 11 10 5 7 6 ind2 = Columns 1 through 13 3 4 7 2 10 12 11 1 10 9 8 6 5 Columns 14 through 15 3 3 Ac = Columns 1 through 13 3 1 1 1 2 1 1 1 2 1 1 1 1 Columns 14 through 15 3 3
Example 2: Getting unique entries and occurance counts for NxM arrays
n=5; m=6; A=round(25*rand(n,m)); %Rounded random set in range 0-25 A(1)=A(end); %Force at least one double occurance for this example A %Get unique set and counts [A_uni,ind1,ind2,Ac]=cunique(A)
A = 5 5 8 6 12 6 21 14 14 11 11 12 20 18 23 7 18 13 16 2 9 24 21 3 25 22 24 8 12 5 A_uni = 2 3 5 6 7 8 9 11 12 13 14 16 18 20 21 22 23 24 25 ind1 = 9 29 1 16 18 11 14 17 21 28 7 4 8 3 2 10 13 15 5 ind2 = 3 3 6 4 9 4 15 11 11 8 8 9 14 13 17 5 13 10 12 1 7 18 15 2 19 16 18 6 9 3 Ac = 3 3 2 2 3 2 2 2 2 2 2 3 1 2 1 1 2 1 1 1 1 2 2 1 1 1 2 2 3 3
Visualizing input array and occurange counts
cFigure; subplot(1,2,1); title('The input array') hold on; imagesc(A); image_numeric(A,[],0,fontSize); axis tight; axis equal; colormap(gca,gjet(max(A(:)))); icolorbar; subplot(1,2,2); title('The occurance counts') hold on; imagesc(Ac); image_numeric(Ac,[],0,fontSize); axis tight; axis equal; colormap(gca,gjet(max(Ac(:)))); icolorbar; drawnow;
Example 3: Getting unique entries and occurance counts for NxMx... arrays
n=3; m=4; l=2; A=round(25*rand(n,m,l)); %Rounded random set in range 0-25 A(1)=A(end); %Force at least one double occurance for this example A %Get unique set and counts [A_uni,ind1,ind2,Ac]=cunique(A)
A(:,:,1) = 8 12 12 6 22 19 18 22 2 11 17 21 A(:,:,2) = 24 14 16 15 4 11 18 18 2 2 15 8 A_uni = 2 4 6 8 11 12 14 15 16 17 18 19 21 22 24 ind1 = 3 14 10 1 6 4 16 21 19 9 8 5 12 2 13 ind2(:,:,1) = 4 6 6 3 14 12 11 14 1 5 10 13 ind2(:,:,2) = 15 7 9 8 2 5 11 11 1 1 8 4 Ac(:,:,1) = 2 2 2 1 2 1 3 2 3 2 1 1 Ac(:,:,2) = 1 1 1 2 1 2 3 3 3 3 2 2
Example 4: Using 'rows' option
n=5; m=3; A=round(25*rand(n,m)); %Rounded random set in range 0-25 A(1,:)=A(end,:); %Force at least one double row for this example A %Get unique set and counts [A_uni,ind1,ind2,Ac]=cunique(A,'rows')
A = 12 15 19 6 18 4 23 21 17 21 25 21 12 15 19 A_uni = 6 18 4 12 15 19 21 25 21 23 21 17 ind1 = 2 1 4 3 ind2 = 2 1 4 3 2 Ac = 2 1 1 1 2
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-2022 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/.