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

如何在MATLAB中通过识别唯一位置更新图像矩阵值?

解决重复位置数值求和并更新图像矩阵的问题

没问题,我来帮你搞定这个需求!你已经完成了唯一位置的识别,接下来只需要两步就能实现重复位置数值求和并更新图像矩阵:

步骤1:计算每个唯一位置的数值总和

利用accumarray函数,结合你已经得到的rowidx(原始位置对应的唯一行索引),对b中的数值进行分组求和:

sum_vals = accumarray(rowidx, b);

比如你提供的例子里,[1 1]位置对应b的1和7,求和后得到8;[2 2]对应4和8,求和后得到12,其他无重复的位置则保留原数值。

步骤2:将求和结果赋值到图像矩阵的对应位置

uniquerow的每一行存储的是[行号, 列号],直接用矩阵索引就能把求和后的值写入final_img:

final_img(uniquerow(:,1), uniquerow(:,2)) = sum_vals;

如果你的final_img是三维图像(比如RGB格式),只需要补充维度索引即可,比如final_img(uniquerow(:,1), uniquerow(:,2), :) = sum_vals;(注意要保证sum_vals的维度和图像维度匹配)。

完整示例代码

结合你的输入数据,完整可运行的代码如下:

% 你的原始数据
a = [1 1; 1 2; 2 1; 2 2; 3 1; 3 2; 1 1; 2 2];
b = [1 2 3 4 5 6 7 8];
final_img = zeros(3,2); % 假设初始是3行2列的零矩阵

% 你已完成的唯一位置识别
[uniquerow, ~, rowidx] = unique(a, 'rows');
noccurrences = accumarray(rowidx, 1);

% 新增的求和与赋值步骤
sum_vals = accumarray(rowidx, b);
final_img(uniquerow(:,1), uniquerow(:,2)) = sum_vals;

运行后final_img的结果为:

8   2
3  12
5   6

完全满足重复位置数值求和的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:14:40