0001 function sorted_st = ensemble_sort(data_st, sort_var, sort_dir)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 if ~strcmp(sort_var,data_st.vars)
0017 error('Desired variable for sort (%s) not present in data struct', sort_var)
0018 end
0019
0020 cols = set_var_col_const(data_st.vars);
0021
0022 if ~exist('sort_dir','var') || isempty(sort_dir)
0023 sort_dir = 'ascend';
0024 end
0025
0026
0027 sorted_st = data_st;
0028 sorted_st.data = cell(size(sorted_st.data));
0029
0030
0031 if iscell(data_st.data{cols.(sort_var)})
0032 [~,sort_idxs] = sort(data_st.data{cols.(sort_var)});
0033 else
0034 [~,sort_idxs] = sort(data_st.data{cols.(sort_var)},sort_dir);
0035 end
0036
0037
0038 nvar = length(data_st.vars);
0039 for ivar = 1:nvar
0040 sorted_st.data{ivar} = data_st.data{ivar}(sort_idxs);
0041 end
0042
0043 return