matlab - 如何在 MATLAB 中对矩阵的每一项应用条件并获得相同大小的输入矩阵并计算 1 的数量?

标签 matlab matrix

我想将小于 0.0038 的值设置为一 (1),其余值为零 (0),然后我需要计算以下矩阵中 1 的数量 (berMap_mean)其尺寸为 41*41。

enter image description here

我所做的是: 首先,我应用了一个条件,必须显示一个具有相同大小且包含 0 和 1 的矩阵,且条件如下

isSmaller = berMap_mean(berMap_mean < 0.0038);
由于上述条件,isSmaller 必须是一个仅具有与上述矩阵相同大小的 0 和 1 的矩阵,如下所示。 enter image description here

然后我想用以下条件计算上述矩阵中的个数。

numSmaller = sum(sum(isSmaller(:) == 1)); 

然后应用以下等式 Coverage_area = (numSmaller/(41*41))*400

但是我无法在第一个条件下获得我想要的矩阵,但我得到了一些不同的东西,如下所示,而后两个条件没有向我显示任何内容。

enter image description here

请问有什么帮助吗?您可以将 berMap_mean 视为任何尺寸为 41*41 double 的随机 map 。

%%计算覆盖面积

isSmaller = berMap_mean(berMap_mean < 0.0038);
numSmaller = sum(sum(isSmaller(:) == 1)); 
Coverage_area = (numSmaller/(41*41))*400  

最佳答案

您的 isSmaller 表达式看起来是正确的,这将为您提供一个与 berMap_mean 大小相同的逻辑数组。您可以使用 nnz 来计算非零元素的数量,并使用 numel 来计算元素的数量来简化接下来的表达式。

fractionSmaller = nnz(isSmaller) / numel(isSmaller)

关于matlab - 如何在 MATLAB 中对矩阵的每一项应用条件并获得相同大小的输入矩阵并计算 1 的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74400218/

相关文章:

string - Matlab:如何从字符串中删除前缀

matlab - 为什么 fprintf 在文本模式下的行为与在正常模式下正确设置的回车符不同?

java - 将 matlab 输入 (stdin) 连接到 java

python - 将 numpy.matrix 转换为 C 双指针的正确方法

python - Python 中的矩阵

performance - matlab : vectorize 4D matrix sum

arrays - 如何重复向量的每第三个元素?

algorithm - 与向量相吻合

r - 以最快的方式使用数组索引按降序打印矩阵的排序元素

python - 计算矩阵的 log2