查看: 380|回复: 2|关注: 0

[已解决] 矩阵遍历

[复制链接]

新手

14 麦片

财富积分


050


13

主题

25

帖子

0

最佳答案
本帖最后由 Eric83209 于 2020-4-3 23:40 编辑

蒟蒻我又来了~
问题描述:
  我现在有一个144*144的矩阵D,现在想求这个大矩阵D的每个3*3的小矩阵的最大值下标(i,j),并将这个(144*(i-1)+j)这个值赋给同样大小的矩阵E(i,j)当z中,我写了一个程序,可是总是出现只有第一个子矩阵完全赋值,其余都是0的情况,想了好久,希望大佬们可以给出意见!
代码:
  1. E=zeros(144,144)%建立144*144的零矩阵
  2. for i=1:3:142
  3. for j=1:3:142
  4. [i,j]=find(max(max(D(i:i+2,j:j+2)))==D(i:i+2,j:j+2));
  5. E(i,j)=144*(i-1)+j;
  6. end
  7. end
复制代码
运行结果:
正在学习matlab有关知识,代码有什么问题还请各位指正!

运行结果

运行结果
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

中级

650 麦片

财富积分


5001500


22

主题

957

帖子

110

最佳答案
  • 关注者: 9
发表于 2020-4-4 00:24:54 | 显示全部楼层 |此回复为最佳答案
>>  D =10.*rand(144,144);
>> for i=1:3:142
for j=1:3:142
data = D(i:i+2,j:j+2);
maxdata = max(max(data));
[rows,cols]=find(data ==maxdata);
ti = i:i+2;
oi = ti(rows);%原始坐标
tj = j:j+2;
oj = tj(cols);
E(oi,oj)=144*(oi-1)+oj;
end
end
回复此楼 已获打赏: 0 积分

举报

新手

14 麦片

财富积分


050


13

主题

25

帖子

0

最佳答案
 楼主| 发表于 2020-4-4 11:09:41 | 显示全部楼层
onlye_caisA 发表于 2020-4-4 00:24
>>  D =10.*rand(144,144);
>> for i=1:3:142
for j=1:3:142

谢谢!这个程序导入数据后是可以使用的
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表