[已解决] matlab程序中 [~,I]代表什么意思

[复制链接]
跳跳-123 发表于 2019-1-19 21:25:34
[~,I]=sort(p(1,:));
~是非的意思,放在矩阵中有是什么意思呢?

最佳答案


maple1314168 发表于 2019-1-19 21:33:40
函数有两个输出。
只要后面的一个。
前面没有必要使用的话,用~代替。
否则,不能只提取后面的输出。
回复此楼

7 条回复


maple1314168 发表于 2019-1-19 21:33:40
函数有两个输出。
只要后面的一个。
前面没有必要使用的话,用~代替。
否则,不能只提取后面的输出。
回复此楼

跳跳-123 发表于 2019-1-21 22:38:41
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
这两段的差别怎么解释呢?

贺川_DaMjN 发表于 2019-6-21 10:22:17
Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的向量;若欲保留排列前的索引,则可用 [sA,index] = sort(A) ,排序后,sA是排序好的向量,index 是 向量sA 中对 A 的索引。 索引使排列逆运算成为可能。

雪山狼 发表于 2021-3-23 21:55:26
[B,IX]=sort(A); %其中IX是一个大小等于size(A)的数组,其每一列是A中列向量的元素相对应的置换位置记号
[~,I]中I存放的是数字在原矩阵的位置号,~表示把排序后的矩阵忽略,用不到,不取值了。

雪山狼 发表于 2021-3-23 22:04:03
跳跳-123 发表于 2019-1-21 22:38
谢谢回答!可是试了下还是不太懂
那例如程序p=[2 1 4 3;5 6 7 8];
[~,I]=sort(p(1,);

第一个I输出的是数字在原矩阵中的位置号,第二I输出的是排序后的矩阵。你举例的输出的位置号和你矩阵中的数字正好重合,即原P中的1 2 4 3 ,和原P矩阵第1行正好重合。

雪山狼 发表于 2021-3-23 22:09:26
跳跳-123 发表于 2019-1-21 22:38
谢谢回答!可是试了下还是不太懂
那例如程序p=[2 1 4 3;5 6 7 8];
[~,I]=sort(p(1,);

第一个I输出的是数字在原矩阵中的位置号,第二I输出的是排序后的矩阵。你举例的输出的位置号和你矩阵中的数字正好重合,原P中的1位置号为2,原P中的2位置号为1,原P中的3位置号为4,原P中的4位置号为3,所以第一个I的输出为2 1 4 3,跟原P矩阵第一行巧合了。换个矩阵就不一样了。第二I输出的是排序后的矩阵。

1594414146 发表于 2021-4-8 16:31:04
雪山狼 发表于 2021-3-23 22:04
第一个I输出的是数字在原矩阵中的位置号,第二I输出的是排序后的矩阵。你举例的输出的位置号和你矩阵中的 ...

确实是个巧合,导致题主懵了,看来以后取值得注意了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表