“[tmp c]=max(S(:,I),[],2); c(I)=1:K;”在 MatLab 中的含义
Meaning of "[tmp c]=max(S(:,I),[],2); c(I)=1:K; " in MatLab
我正在尝试将 AP 集群的参考实现翻译成 C++。
这一系列语句让我感到困惑,因为它看起来好像向量 c 填充了一些数字,然后迅速被一组不同的数字覆盖。这是没有意义的。这是 Matlab 代码:
[tmp c]=max(S(:,I),[],2); c(I)=1:K;
R 实现有一些非常相似的东西:
c <- max.col(s[, I], ties.method="first")
c[I] <- 1:K
确实 s 是 NxN 而 I 的长度是 K << N。但是当我读到它时,c 的大小与 I 相同,因此最终值只是 [=20= 的排列] 这取决于 I 但不取决于第一个语句的结果。
我以为我知道每个语句的作用,但组合是个谜。请直截了当
说到 R 版本:if
s is NxN while I is of length K << N.
然后
s[,I]
的维度为 N(行)x K(列)
- 根据
?max.col
,max.col
“[f]找到[s]矩阵的每一行的最大位置”(强调)
- 因此
c
的长度为 N
(即等于 s[,I
的 行 的数量)
如果 I
的长度为 K
,则将值分配给 c[I]
将仅填充 c
的 N
个值中的 K
=],让另一个 N-K
等于它们的原始值。
R 进行向量化赋值,所以 c[I] <- 1:K
等同于(但比)
for (j in seq(K)) {
c[I[j]] <- j
}
我正在尝试将 AP 集群的参考实现翻译成 C++。 这一系列语句让我感到困惑,因为它看起来好像向量 c 填充了一些数字,然后迅速被一组不同的数字覆盖。这是没有意义的。这是 Matlab 代码:
[tmp c]=max(S(:,I),[],2); c(I)=1:K;
R 实现有一些非常相似的东西:
c <- max.col(s[, I], ties.method="first")
c[I] <- 1:K
确实 s 是 NxN 而 I 的长度是 K << N。但是当我读到它时,c 的大小与 I 相同,因此最终值只是 [=20= 的排列] 这取决于 I 但不取决于第一个语句的结果。
我以为我知道每个语句的作用,但组合是个谜。请直截了当
说到 R 版本:if
s is NxN while I is of length K << N.
然后
s[,I]
的维度为 N(行)x K(列)- 根据
?max.col
,max.col
“[f]找到[s]矩阵的每一行的最大位置”(强调) - 因此
c
的长度为N
(即等于s[,I
的 行 的数量)
如果 I
的长度为 K
,则将值分配给 c[I]
将仅填充 c
的 N
个值中的 K
=],让另一个 N-K
等于它们的原始值。
R 进行向量化赋值,所以 c[I] <- 1:K
等同于(但比)
for (j in seq(K)) {
c[I[j]] <- j
}