最佳答案
函数有两个输出。 只要后面的一个。 前面没有必要使用的话,用~代替。 否则,不能只提取后面的输出。 |
7 条回复
函数有两个输出。 只要后面的一个。 前面没有必要使用的话,用~代替。 否则,不能只提取后面的输出。 |
maple1314168 发表于 2019-1-19 21:33 谢谢回答!可是试了下还是不太懂 那例如程序p=[2 1 4 3;5 6 7 8]; [~,I]=sort(p(1,:)); I 输出 2 1 4 3 p=[2 1 4 3;5 6 7 8]; I=sort(p(1,:)); I 输出 1 2 3 4 这两段的差别怎么解释呢? |
Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的向量;若欲保留排列前的索引,则可用 [sA,index] = sort(A) ,排序后,sA是排序好的向量,index 是 向量sA 中对 A 的索引。 索引使排列逆运算成为可能。 |
[B,IX]=sort(A); %其中IX是一个大小等于size(A)的数组,其每一列是A中列向量的元素相对应的置换位置记号 [~,I]中I存放的是数字在原矩阵的位置号,~表示把排序后的矩阵忽略,用不到,不取值了。 |
跳跳-123 发表于 2019-1-21 22:38 第一个I输出的是数字在原矩阵中的位置号,第二I输出的是排序后的矩阵。你举例的输出的位置号和你矩阵中的数字正好重合,即原P中的1 2 4 3 ,和原P矩阵第1行正好重合。 |
跳跳-123 发表于 2019-1-21 22:38 第一个I输出的是数字在原矩阵中的位置号,第二I输出的是排序后的矩阵。你举例的输出的位置号和你矩阵中的数字正好重合,原P中的1位置号为2,原P中的2位置号为1,原P中的3位置号为4,原P中的4位置号为3,所以第一个I的输出为2 1 4 3,跟原P矩阵第一行巧合了。换个矩阵就不一样了。第二I输出的是排序后的矩阵。 |
雪山狼 发表于 2021-3-23 22:04 确实是个巧合,导致题主懵了,看来以后取值得注意了 |
Powered by Discuz! X3.4
© 2001-2021