arrays - 矩阵中基于向量的消除零点

标签 arrays matlab vector matrix

我有一个矩阵

frequencyarray =

    697    697    697    697    697    697      0      0    697
      0      0      0      0      0      0    770    770      0
      0      0      0      0      0      0      0      0      0
      0      0      0      0      0      0      0      0      0
   1209   1209   1209   1209   1209   1209   1209   1209   1209
      0      0      0      0      0      0      0      0      0
      0      0      0      0      0      0      0      0      0

我现在想从中消除向量基上的所有零并得到这个

frequencyarray2 =

    697    697    697    697    697    697    770    770    697
   1209   1209   1209   1209   1209   1209   1209   1209   1209

我只想在向量中恰好有两个非零数字时执行此操作。如果向量中的非零数多于或少于两个,则应将它们替换为零。

因此,如果我有类似的东西:

frequencyarray =

      0      0    697    697
      0      0    770    770
      0      0      0      0
      0      0      0      0
   1209   1209   1209   1209
      0      0      0      0
      0      0      0      0

响应应该是:

frequencyarray2 =

      0      0      0      0

使用查找,这不起作用,它只是在单个向量上完成所有操作。我考虑过使用 find 然后 reshape 。但这仅在每个向量正好有两个数字非零时才有效。

如果可能,我想避免循环。这些列之间没有任何关系。

任何想法表示赞赏

最佳答案

您可以同时使用sumfind。像这样的东西:

frequencyarray(sum(frequencyarray==0)==2)

关于arrays - 矩阵中基于向量的消除零点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953940/

相关文章:

javascript - 数组 数学逻辑 JavaScript

python - 将 Matlab 图叠加到 Python 图/图像上

matlab - `eval()`可以避免吗? (运行时指定变量名)

将循环从 Matlab 转换为 C

c++ - 这种方法会涉及内存重新分配从而影响其效率吗?

vector - Rust 泛型向量<Vector<T>>

php - 使用任意数量的硬币可以有多少种不同的方式来制作 3 美元?

javascript - 在数组的 2/3 上调用自身的排序算法

c++ - 获取指向集合中原始数据的指针,如 &(vector[0])

ruby - 最多 n 的组合