我有一个虚拟变量矩阵,其中每一行都是0,除了一个1指示该样本属于哪个类。例如[1 0 0; 0 0 1]
表示第一个样本来自第1类,第二个样本来自第3类。我想要一个返回[1; 3]
的函数。
函数dummyvar
与我想要的相反。是否有一个优雅的解决方案,不需要for循环?
答案 0 :(得分:3)
您可以使用find
命令。
dummy = [1 0 0; 0 0 1];
[idx,~] = find(dummy')
idx =
1
3
编辑:为了保持更复杂的虚拟对象的正确顺序,我们必须得到转置的行索引,而不是数组的更直观的列索引。感谢@woodchips发现这个!