MATLAB:如何按特定列名对矩阵进行排序,并让行名遵循顺序?

时间:2014-05-15 02:54:33

标签: matlab sorting indexing cell-array

我是MATLAB的新手。我有一个名为da的数据结构。我想对da.mat的第一列进行排序,并希望让da.rid和其他列遵循重新排列的顺序。 da.cid包含列名称,da.rid包含行ID。

da = 
    mat: [22268x377 single]
    rid: {22268x1 cell}
    rhd: {''}
  rdesc: {22268x1 cell}
    cid: {377x1 cell}
    chd: {0x1 cell}
  cdesc: {377x0 cell}

另外,如果我想使用其他列而不是da.mat的第一列,我将从da.cid获取,我该如何实现呢? 例如,如果我想在'A02'中查找列名cid,并使用它来选择da.mat的特定列进行排序。请你帮助我好吗?感谢。

木质

1 个答案:

答案 0 :(得分:0)

假设其他列,您的意思是da.mat本身的其他列,您可以试试这个 -

[val,ind] = sort(da.mat(:,1))
da.mat = da.mat(ind,:)
da.rid = da.rid(ind)

如果您希望使用其他列号而不是1进行排序,并根据字段cid中的名称,请使用此项 -

cid_matchcol =  'A02'; %// column name to be used from `da.cid` to choose column of `da.mat`

base_col = find(strcmp(da.cid,cid_matchcol),1)
[val,ind] = sort(da.mat(:,base_col))
da.mat = da.mat(ind,:)
da.rid = da.rid(ind)