我有一个矩阵
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 。但这仅在每个向量正好有两个数字非零时才有效。
如果可能,我想避免循环。这些列之间没有任何关系。
任何想法表示赞赏
最佳答案
您可以同时使用sum
和find
。像这样的东西:
frequencyarray(sum(frequencyarray==0)==2)
关于arrays - 矩阵中基于向量的消除零点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953940/