Image 矩阵的字典排序
我需要按照字典顺序对矩阵进行排序(每一行都是一个特征向量)Image 矩阵的字典排序,image,matlab,image-processing,Image,Matlab,Image Processing,我需要按照字典顺序对矩阵进行排序(每一行都是一个特征向量) test_mat = [10 40 30 -1 ; 43 78 -5 1; 87 54 -4 -2]; 但在看了几个帖子后,有: sortrows(test_mat) sort(test_mat) 我不完全确定哪种方法是正确的,因为我从每种方法中得到的结果完全不同 根据Sardar Usama的评论,我正在使用测试矩阵: A = [10 40 30 -1; 43 78 -5 1; 87 54 -4 -2]; s
test_mat = [10 40 30 -1 ; 43 78 -5 1; 87 54 -4 -2];
但在看了几个帖子后,有:
sortrows(test_mat)
sort(test_mat)
我不完全确定哪种方法是正确的,因为我从每种方法中得到的结果完全不同 根据Sardar Usama的评论,我正在使用测试矩阵:
A = [10 40 30 -1;
43 78 -5 1;
87 54 -4 -2];
sort(A,dim)
按升序对A
的每个向量进行排序。如果dim
为1,则每个列向量为1;如果dim
为2,则每个行向量为2
例如:sort(A,2)
按升序对A
的每一行进行排序。这意味着每一行都将被视为行向量,并将按升序排序
% ascending sorting of every row vector
sort(A,2)
ans =
-1 10 30 40
-5 1 43 78
-4 -2 54 87
% ascending sorting of every column vector
sort(A,1)
ans =
10 40 -5 -2
43 54 -4 -1
87 78 30 1
sortrows(A,1)
ans = 10 40 30 -1
43 78 -5 1
87 54 -4 -2
sortrows(A,col)
根据列col
按升序对A
的行进行排序。单个行不会更改,因此不会修改行
例如:sortrows(A,1)
根本不会更改A
,因为第一列已按升序排列
% ascending sorting of every row vector
sort(A,2)
ans =
-1 10 30 40
-5 1 43 78
-4 -2 54 87
% ascending sorting of every column vector
sort(A,1)
ans =
10 40 -5 -2
43 54 -4 -1
87 78 30 1
sortrows(A,1)
ans = 10 40 30 -1
43 78 -5 1
87 54 -4 -2
如果您只使用sortrows(A)
,A
将始终按照默认的第一列进行排序,如果您使用sortrows(A,1)
,它也会执行相同的操作,但是您也可以使用sortrows(A,3)
并按照第三列进行排序。此外,您还可以使用sortrows(A,[13])
,它首先基于列1进行排序,列1具有相同值的所有行将根据列3进行排序sortrows(A,[1234])
当然与sortrows(A)
相同。(这是默认设置)
因此,如果行是特征向量,sortrows
将根据特征/列之一对特征向量进行排序,但特征向量/行本身将保持不变,sort
也将更改行/特征向量本身,因为每一行都将按升序进行更改/排序。所以我想你想要sortrows
如果你只有数值,我看不出有任何理由进行转换。根据Sardar Usama的评论,我正在使用测试矩阵:
A = [10 40 30 -1;
43 78 -5 1;
87 54 -4 -2];
sort(A,dim)
按升序对A
的每个向量进行排序。如果dim
为1,则每个列向量为1;如果dim
为2,则每个行向量为2
例如:sort(A,2)
按升序对A
的每一行进行排序。这意味着每一行都将被视为行向量,并将按升序排序
% ascending sorting of every row vector
sort(A,2)
ans =
-1 10 30 40
-5 1 43 78
-4 -2 54 87
% ascending sorting of every column vector
sort(A,1)
ans =
10 40 -5 -2
43 54 -4 -1
87 78 30 1
sortrows(A,1)
ans = 10 40 30 -1
43 78 -5 1
87 54 -4 -2
sortrows(A,col)
根据列col
按升序对A
的行进行排序。单个行不会更改,因此不会修改行
例如:sortrows(A,1)
根本不会更改A
,因为第一列已按升序排列
% ascending sorting of every row vector
sort(A,2)
ans =
-1 10 30 40
-5 1 43 78
-4 -2 54 87
% ascending sorting of every column vector
sort(A,1)
ans =
10 40 -5 -2
43 54 -4 -1
87 78 30 1
sortrows(A,1)
ans = 10 40 30 -1
43 78 -5 1
87 54 -4 -2
如果您只使用sortrows(A)
,A
将始终按照默认的第一列进行排序,如果您使用sortrows(A,1)
,它也会执行相同的操作,但是您也可以使用sortrows(A,3)
并按照第三列进行排序。此外,您还可以使用sortrows(A,[13])
,它首先基于列1进行排序,列1具有相同值的所有行将根据列3进行排序sortrows(A,[1234])
当然与sortrows(A)
相同。(这是默认设置)
因此,如果行是特征向量,sortrows
将根据特征/列之一对特征向量进行排序,但特征向量/行本身将保持不变,sort
也将更改行/特征向量本身,因为每一行都将按升序进行更改/排序。所以我想你想要sortrows
如果您只有数字值,我看不出任何强制转换的理由。
test\u mat
第一行有五个元素,但第二行和第三行只有四个元素。这是不可能的matrix@SardarUsama抱歉,结尾的第一行“0”不应该在那里。我不小心打了一个额外的number@Maxxx:您可以编辑您的问题以修复该打字错误;这是很好的做法。test\u mat
第一行有五个元素,但第二行和第三行只有四个元素。这是不可能的matrix@SardarUsama抱歉,结尾的第一行“0”不应该在那里。我不小心打了一个额外的number@Maxxx:您可以编辑您的问题以修复该打字错误;这是很好的练习,谢谢!sortrows(A)和sortrows(A,1)之间有什么区别吗?啊,非常感谢。这是一个很好的建议:在matlab中,数字要比字符串快得多,所以你应该尽可能地坚持使用数字。字符串的字典排序与它们所代表的数字的数字排序不同,因此在字符串域中工作会给你错误的答案@AndrewJanke谢谢你。因为我在几周前的其他帖子中看到了10,1和2被使用的地方,询问者希望按字典顺序对它们进行排序,以获得1102。然而,只有当它们被表示为字符串时才有可能,因此当我在matlab中处理矩阵时会产生混乱。这个链接好的,是的,你的意思和我的意思一样:根据列顺序将行排序为“项”;不是Matlab中央邮报所说的奇怪的事情。那么,这个答案是正确的:您需要sortrows()
。谢谢非常感谢。sortrows(A)和sortrows(A,1)之间有什么区别吗?啊,非常感谢。这是一个很好的建议:在matlab中,数字要比字符串快得多,所以你应该尽可能地坚持使用数字。字符串的字典排序与th不同