You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:25:19