Как я уже говорил в комментарии выше, вы сомневаетесь. Я думаю, вы вводите в заблуждение структуры и структуры массивов. Это может помочь post.
Это, пожалуйста, вот пример, чтобы показать, что я думаю, что вы хотели сделать.
Сначала я создать структуру массива а с некоторыми случайными данными:
% cell array of 10 names
names = arrayfun(@(k) randsample(['A':'Z' 'a':'z' '0':'9'],k), ...
randi([5 10],[10 1]), 'UniformOutput',false);
% 10x6 matrix of values
values = rand(10,6);
% 10x1 vector of values
returns = randn(10,1);
% 10x1 structure array
StockInfo = struct('Name',names, 'Values',num2cell(values,2), ...
'Return',num2cell(returns));
Созданная переменная представляет собой массив структур:
>> StockInfo
StockInfo =
10x1 struct array with fields:
Name
Values
Return
, где каждый элемент представляет собой структуру со следующим Поля:
>> StockInfo(1)
ans =
Name: 'Pr3N4LTEi'
Values: [0.7342 0.1806 0.7458 0.8044 0.6838 0.1069]
Return: -0.3818
Дальше сортировать это структура массива с помощью поля «возврата» (каждая структура имеет соответствующее скалярное значение):
[~,ord] = sort([StockInfo.Return]);
StockInfo = StockInfo(ord);
Результатом является то, что массив теперь сортируются по значениям «возврата» в порядке возрастания:
>> [StockInfo.Return]
ans =
Columns 1 through 8
-0.3818 0.4289 -0.2991 -0.8999 0.6347 0.0675 -0.1871 0.2917
Columns 9 through 10
0.9877 0.3929
Ваша проблема не определена. У вас есть структурный массив, где каждая структура показана. Если вы хотите отсортировать массив структур, то это должно быть сделано на основе скалярного значения для каждого элемента, а не массива ... Пожалуйста, уточните – Amro