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

如何筛选矩阵各列均值以上值并生成对应0-1矩阵(MATLAB)

矩阵列均值筛选生成0-1矩阵的实现(Matlab)

需求说明

给定一个4行5列的矩阵(行代表年份,列代表月份,存储月降水量数据),需完成以下操作:

  • 计算矩阵每一列的平均值
  • 将列中大于平均值的元素替换为1,小于等于平均值的元素替换为0
  • 最终得到与原矩阵行列数一致的0-1矩阵

测试数据

生成测试矩阵的代码:

w = randi([1 12], 4,5)

生成的具体矩阵示例:

w =
 1    12     1     8     9
 9     3    11     3    10
 8     2     8    12     1
 2     1     7     8    10

实现代码

利用Matlab的向量化运算可以高效完成需求,代码如下:

% 按列计算平均值,得到1×5的均值行向量
col_avg = mean(w, 1);
% 通过逻辑比较生成0-1矩阵(逻辑型转数值型)
result = double(w > col_avg);

代码解释

  1. mean(w, 1):指定维度1(列方向)计算均值,得到与原矩阵列数一致的行向量,Matlab的广播机制会自动将其扩展为与原矩阵同尺寸的矩阵,用于逐元素比较。
  2. w > col_avg:逐元素比较矩阵元素与对应列的均值,生成逻辑矩阵(true对应大于均值,false对应≤均值)。
  3. double():将逻辑矩阵转换为数值矩阵,true转为1,false转为0。

预期输出

运行上述代码后,得到的0-1矩阵与示例一致:

result =
     0     1     0     1     1
     1     0     1     0     1
     1     0     1     1     0
     0     0     1     1     1

内容的提问来源于stack exchange,提问作者Sorena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:52:35