索引的虚拟变量 - dummyvar函数的倒数?

时间:2012-08-16 00:56:34

标签: matlab

我有一个虚拟变量矩阵,其中每一行都是0,除了一个1指示该样本属于哪个类。例如[1 0 0; 0 0 1]表示第一个样本来自第1类,第二个样本来自第3类。我想要一个返回[1; 3]的函数。

函数dummyvar与我想要的相反。是否有一个优雅的解决方案,不需要for循环?

1 个答案:

答案 0 :(得分:3)

您可以使用find命令。

dummy = [1 0 0; 0 0 1];
[idx,~] = find(dummy')
idx =
     1
     3

编辑:为了保持更复杂的虚拟对象的正确顺序,我们必须得到转置的行索引,而不是数组的更直观的列索引。感谢@woodchips发现这个!