我想将小于 0.0038 的值设置为一 (1),其余值为零 (0),然后我需要计算以下矩阵中 1 的数量 (berMap_mean)其尺寸为 41*41。
我所做的是: 首先,我应用了一个条件,必须显示一个具有相同大小且包含 0 和 1 的矩阵,且条件如下
isSmaller = berMap_mean(berMap_mean < 0.0038);
由于上述条件,isSmaller 必须是一个仅具有与上述矩阵相同大小的 0 和 1 的矩阵,如下所示。
然后我想用以下条件计算上述矩阵中的个数。
numSmaller = sum(sum(isSmaller(:) == 1));
然后应用以下等式
Coverage_area = (numSmaller/(41*41))*400
但是我无法在第一个条件下获得我想要的矩阵,但我得到了一些不同的东西,如下所示,而后两个条件没有向我显示任何内容。嗯>
请问有什么帮助吗?您可以将 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/