【发布时间】:2015-05-28 06:31:40
【问题描述】:
在 Octave 上,我正在尝试以以下格式解压缩矢量:
y = [ 1
2
4
1
3 ]
我想返回一个维度矩阵( rows(y) x max value(y) ),其中对于每一行,我在原始数字值的列中都有一个 1,而在其他任何地方都是一个零,即对于上面的例子
y01 = [ 1 0 0 0
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0 ]
目前为止
y01 = zeros( m, num_labels );
for i = 1:m
for j = 1:num_labels
y01(i,j) = (y(i) == j);
end
end
这可行,但对于更大的矩阵来说会变慢,而且似乎效率低下,因为它会循环遍历每个值,即使大多数值没有变化。
我在another thread 上为 R 找到了这个:
f3 <- function(vec) {
U <- sort(unique(vec))
M <- matrix(0, nrow = length(vec),
ncol = length(U),
dimnames = list(NULL, U))
M[cbind(seq_len(length(vec)), match(vec, U))] <- 1L
M
}
但我不知道 R,我不确定解决方案是否/如何移植到八度。
感谢您的任何建议!
【问题讨论】:
标签: matrix vector binary octave