【问题标题】:Meaning of "[tmp c]=max(S(:,I),[],2); c(I)=1:K; " in MatLabMatLab中“[tmp c]=max(S(:,I),[],2); c(I)=1:K; ”的含义
【发布时间】:2020-08-15 04:45:55
【问题描述】:

我正在尝试将 AP Clustering 的参考实现翻译成 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

我以为我知道每个语句的作用,但组合是一个谜。请纠正我。

【问题讨论】:

  • 确实 s 是 NxN 而 I 的长度是 K
  • 请将代码放入问题正文中,正确的代码格式会更容易阅读。还要在问题本身中包含您对s 的大小和K 的值的评论。 cmets 旨在要求澄清,而不是扩展问题。您可以随时edit您的问题。

标签: r matlab cluster-analysis


【解决方案1】:

谈及 R 版本:if

s 是 NxN 而 I 的长度是 K

然后

  • s[,I] 的尺寸为 N(行)x K(列)
  • 根据?max.colmax.col“[f]ind[s] 矩阵的每一行的最大位置”(强调)
  • 因此c 的长度为N(即等于s[,I行数

如果I 的长度为K,则将值分配给c[I] 将仅填充cN 值中的K,而使其他N-K 等于其原始值.

R 进行向量化赋值,所以c[I] &lt;- 1:K 等价于(但比)更快

for (j in seq(K)) {
    c[I[j]] <- j
}

【讨论】:

  • 啊哈。非常感谢。假设这些 K 值是 c[I[1]] == 1、c[I[2]] == 2 等等,我是否正确?
猜你喜欢
  • 2016-07-29
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 2021-05-27
  • 1970-01-01
相关资源
最近更新 更多