File Exchange

image thumbnail

SORTFIELDS

version 1.0.0.0 (2.07 KB) by Ian Howat
SORTFIELDS sort values in all fields within a structure.

1 Download

Updated 25 Aug 2008

View License

%SORTFIELDS sort values in all fields within a structure.
% SORTFIELDS(A) sorts the rows of each field of structure A in asending
% order and returns a structure of the same dimension and field names.
% SORTFIELDS(A,'SORTBYFIELD','FIELDNAME',...) sorts each field by the
% specified field. All fields must be the same size.
% SORTFIELDS(A,'PARAMETER1','VALUE1','PARAMETER2','VALUE2',....) uses the
% properties:
% DIM selects a dimension along which to sort.
% MODE selects the direction of the sort
% 'ascend' results in ascending order
% 'descend' results in descending order
%
% EXAMPLES:
% >> A.field1 = [9,1,8,2,7,3,6,4,5]; A.field2 = fliplr(A.field1)
% A =
% field1: [9 1 8 2 7 3 6 4 5]
% field2: [5 4 6 3 7 2 8 1 9]
% >> B = sortfields(A)
% B =
% field1: [1 2 3 4 5 6 7 8 9]
% field2: [1 2 3 4 5 6 7 8 9]
% >> B = sortfields(A,'sortbyfield','field1')
% B =
% field1: [1 2 3 4 5 6 7 8 9]
% field2: [4 3 2 1 9 8 7 6 5]
% >> B = sortfields(A,'sortbyfield','field1','mode','descend','dim',2)
% B =
% field1: [9 8 7 6 5 4 3 2 1]
% field2: [5 6 7 8 9 1 2 3 4]

Cite As

Ian Howat (2021). SORTFIELDS (https://www.mathworks.com/matlabcentral/fileexchange/21209-sortfields), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (4)

Stephen Cobeldick

All of those EVAL statements should be replaced by dynamic fieldnames:

<https://www.mathworks.com/help/matlab/matlab_prog/generate-field-names-from-variables.html>

<https://blogs.mathworks.com/loren/2005/12/13/use-dynamic-field-references/>

Simpler and more efficient dynamic fieldnames have been supported by MATLAB for over fifteen years, so this submission really should be updated from using awful evil EVAL (cause of slow, buggy, obfuscated code that is hard to debug).

Matt Fetterman

Seems quite useful !

shlomix

It'll be also useful if you return the parameter 'I' in the same manner that the sort function does. 'I' should be an array or cell array in the case that 'SORTBYFIELDS' was not used.

shlomix

This function is just what I looked for. Thanks.
I suggest you add another option to sort the fields according to a supplied variable and not only according to one of the fields.
It is a complimentary option to 'SORTBYFIELD' and can be called 'SORTBYVAR'.

MATLAB Release Compatibility
Created with R2007b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!