ranking a cell array

4 visualizaciones (últimos 30 días)
Richard
Richard el 1 de Mzo. de 2012
Take the following example:
clear all
Name1 = {'Data1','Data2','Data3','Data4'};
Data = {6.2,6,3.2,8};
CombnsName = nchoosek(Name1,2);
CombnsData = nchoosek(Data,2);
for i = 1:length(CombnsData);
multiplied{i} = CombnsData{i,1}.*CombnsData{i,2};
end
multiplied = multiplied';
Final = [CombnsName, multiplied];
Rankd = sort(cell2mat(multiplied));
Here, Final represents the values gained by multiplying every possible combination of 'Name1'. Now, I'm trying to find a way of changing the order of 'Final' to correspond to the ranking order defined by 'Rankd'. For example the first 'line' of Final should read 'Data2 'Data3' 19.2; and the last 'line' should read 'Data1' Data4' 49.6.
Is there a method for doing this?

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 1 de Mzo. de 2012
Cresult = cellfun(@times,CombnsData(:,1),CombnsData(:,2))
[C,id] = sort(Cresult);
out = [CombnsName(id,:) num2cell(C)]
  2 comentarios
Richard
Richard el 1 de Mzo. de 2012
also just came across the command sortrows which works
Andrei Bobrov
Andrei Bobrov el 1 de Mzo. de 2012
yes
out = sortrows([CombnsName cellfun(@times,CombnsData(:,1),CombnsData(:,2),'un',0)],3)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by