Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 单元数组的排序_Matlab_Cell_Ranking - Fatal编程技术网

Matlab 单元数组的排序

Matlab 单元数组的排序,matlab,cell,ranking,Matlab,Cell,Ranking,以以下为例: 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 = mul

以以下为例:

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));
这里,Final表示将“Name1”的每个可能组合相乘得到的值。现在,我试图找到一种方法来改变“Final”的顺序,使之与“Rankd”定义的排名顺序相对应。例如,期末考试的第一行应为“Data2”Data3“19.2”;最后一行应该是'Data1'Data4'49.6


有没有这样做的方法?

有两种选择。首先,您可以使用排序的第二个输出,它为您提供与排序数组中的条目对应的索引:

>> [Rankd Index] = sort(cell2mat(multiplied));
然后呢

>> Final(Index,:)

ans = 

    'Data2'    'Data3'    [19.200000000000003]
    'Data1'    'Data3'    [19.840000000000003]
    'Data3'    'Data4'    [25.600000000000001]
    'Data1'    'Data2'    [37.200000000000003]
    'Data2'    'Data4'    [                48]
    'Data1'    'Data4'    [49.600000000000001]
但是,更简单的方法是使用函数
sortrows
,该函数正是为这种情况而设计的:

>> sortrows(Final,3)

ans = 

    'Data2'    'Data3'    [19.200000000000003]
    'Data1'    'Data3'    [19.840000000000003]
    'Data3'    'Data4'    [25.600000000000001]
    'Data1'    'Data2'    [37.200000000000003]
    'Data2'    'Data4'    [                48]
    'Data1'    'Data4'    [49.600000000000001]