Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
Image 矩阵的字典排序_Image_Matlab_Image Processing - Fatal编程技术网

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不同