sortrows
функция предназначена для обработки этого и работает для сотовых массивов:
sortrows(X,COL)
сортирует матрицу на основе столбцов, указанных в векторе COL
.
Скажите, что у вас есть данные T
, отформатированные как ячейки. Например, это случайные данные:
>> T = [mat2cell(char(randi(26,4,3)+64),ones(4,1),ones(3,1)) num2cell(rand(4,3))]
T =
'W' 'M' 'D' [0.5795] [0.1008] [0.1439]
'Z' 'X' 'S' [0.1030] [0.5029] [0.3192]
'R' 'I' 'U' [0.3553] [0.4873] [0.4491]
'L' 'I' 'U' [0.9389] [0.7817] [0.0499]
Для сортировки по колонке № 4 в порядке возрастания:
>> TSortedCol4 = sortrows(T,4)
TSortedCol4 =
'Z' 'X' 'S' [0.1030] [0.5029] [0.3192]
'R' 'I' 'U' [0.3553] [0.4873] [0.4491]
'W' 'M' 'D' [0.5795] [0.1008] [0.1439]
'L' 'I' 'U' [0.9389] [0.7817] [0.0499]
Если вам нужно, чтобы получить данные в формат T
выше от а текстового файла, вы можете сделать следующее, чтобы прочитать и переформатировать его:
fid = fopen('testtable.txt','r');
Tin = textscan(fid, '%q %q %q %f %f %f'); % each column has a cell
strcols=cellfun(@iscell,Tin);
T = [Tin{strcols} num2cell([Tin{~strcols}])]; % each item has a cell
fclose(fid);
Как и в вашем примере, столбцы ar е, ограниченное пробелом. Строки могут включать пробелы, если в текстовом файле используются двойные кавычки из-за спецификатора формата %q
.
Вы уже вытащили струны и поплавки в векторы Matlab? Или это часть вашей проблемы? –
Нет, я могу извлечь данные из файла самостоятельно. –