方括号内的波浪号(~)是什么意思?

783次浏览(过去30天)
Delvin
Delvin 2013年4月18日
评论道: 亚当Danz 2021年1月3日
[~, Palette] = kmeans(重塑(B(:),M*N,3),8,“E”“年代”“年代”“U”);
具体来说,是什么 方括号内表示(例如带有多个LHS赋值的矩阵)?

接受的答案

Tanguy
Tanguy 2013年4月18日
这个函数 kmean 可以使用两个输出:
[IDX C] = kmeans (X, k)
这里使用括号来定义两个输出(它不是一个数组)。在这里,IDX将是第一个输出(包含每个点的聚类指数的向量),C将是第二个输出(包含聚类质心位置的矩阵)。
因此,括号并不意味着您只有一个输出(一个数组),但它们用于收集输出。
无论发生什么,IDX将是第一个输出,C是第二个输出。
但是,如果您只想知道C语言(而不关心IDX),那么将这个值赋给变量是没有用的。
因此,当您使用[~,palette]时,这意味着您只想要函数的第二个输出,而不关心第一个输出。
使用这个方法对你很有帮助(你的工作区中没有很多无用的变量),而且速度更快!
7评论
亚当Danz
亚当Danz 2021年1月3日
>这个` ~ `是否节省了计算IDX的时间,或者它同时计算IDX和C,但只计算输出C?
本次讨论的重点是:
博士TL; :没有,但是有一些方法可以说明在函数中应该产生哪些输出变量。

登录评论。

更多的答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2013年4月18日
它等价于
[temp, Palette] = kmeans(重塑(B(:),M*N,3),8,“E”“年代”“年代”“U”);
清晰的临时
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2019年5月9日
[ThIsVArIAblEiZnOTuzED, Palette] = kmeans(重塑(B(:),M*N,3),8,“E”“年代”“年代”“U”);
清晰的ThIsVArIAblEiZnOTuzED
[]表示函数返回多个输出。它不是一个数组。

登录评论。


Ankur Bhardwaj
Ankur Bhardwaj 2017年5月24日
是否支持Matlab版本20万博1manbetx09。
1评论
史蒂文的主
史蒂文的主 2017年5月24日
我们引入了这个功能 释放R2009b .所以这取决于你所说的“版本2009”——R2009a不是,R2009b是。

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!