MATLAB中对41*41矩阵按条件赋值并统计1的数量求助
问题修复:生成同尺寸0-1矩阵并计算覆盖面积
原代码问题分析
isSmaller = berMap_mean(berMap_mean < 0.0038);这行代码是提取原矩阵中满足条件的元素,得到的是一维向量,而非与原矩阵(41*41)同尺寸的0-1矩阵。sum(sum(isSmaller(:) == 1))逻辑错误:isSmaller存储的是原矩阵中小于0.0038的原始元素值,并非0-1标记,判断其等于1没有意义。
修正后的代码
%% Calculate the coverage area % 生成与berMap_mean同尺寸的0-1矩阵:小于0.0038为1,其余为0 isSmaller = double(berMap_mean < 0.0038); % 统计矩阵中1的数量(逻辑矩阵直接求和也可:sum(isSmaller(:))) numSmaller = sum(isSmaller(:)); % 计算覆盖面积 Coverage_area = (numSmaller/(41*41))*400;
关键说明
berMap_mean < 0.0038会生成一个41*41的逻辑矩阵,满足条件的位置为true(等价于1),不满足为false(等价于0),用double()可将其转为数值型0-1矩阵。sum(isSmaller(:))直接展开矩阵为一维向量并求和,即可得到1的总数量,无需嵌套sum(sum())(嵌套也可,但一维求和更简洁)。
内容的提问来源于stack exchange,提问作者SH_IQ
相关产品推荐
相关产品推荐

