重新排序表行和列Matlab

Tak*_*Tak 0 matlab

我有一个5x5表:

  a  b  c  d  e
a 1  2  3  4  5
b 3  5  7  2  6
c 1  3  4  6  1
d 4  4  1  7  8
e 6  7  2  1  6
Run Code Online (Sandbox Code Playgroud)

标题是字符串.我想知道如何使用标题重新排序表行和列,所以例如我希望它们按此顺序,e b c a d然后这将是表:

  e  b  c  a  d
e 6  7  2  6  1
b 6  5  7  3  2
c 1  3  4  1  6
a 5  7  3  1  4
d 8  4  1  4  7
Run Code Online (Sandbox Code Playgroud)

Lui*_*ndo 5

将表定义为

T = table;
T.a = [1 3 1 4 6].';
T.b = [2 5 3 4 7].';
T.c = [3 7 4 1 2].';
T.d = [4 2 6 7 1].';
T.e = [5 6 1 8 6].';
Run Code Online (Sandbox Code Playgroud)

让新的期望秩序

order = {'e' 'b' 'c' 'a' 'd'};
Run Code Online (Sandbox Code Playgroud)

可以使用索引来重新排序表:

[~, ind] = ismember(order, T.Properties.VariableNames);
T_reordered = T(ind,order);
Run Code Online (Sandbox Code Playgroud)

注意:

  • 仅重新排序您使用的列 T_reorderedCols = T(:,order);
  • 仅重新排序您要使用的行 T_reorderedRows = T(ind,:);

所以在这个例子中,

T = 

    a    b    c    d    e
    _    _    _    _    _

    1    2    3    4    5
    3    5    7    2    6
    1    3    4    6    1
    4    4    1    7    8
    6    7    2    1    6

T_reordered = 

    e    b    c    a    d
    _    _    _    _    _

    6    7    2    6    1
    6    5    7    3    2
    1    3    4    1    6
    5    2    3    1    4
    8    4    1    4    7
Run Code Online (Sandbox Code Playgroud)