找回密码
 注册
关于网站域名变更的通知
查看: 483|回复: 3
打印 上一主题 下一主题

写了一个寻找欧式距离最大的像元坐标程序,运行中却报错,请大神指导

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-14 14:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
9 [7 p- O8 v/ Y/ a7 n6 V: k
写了一个程序,用来寻找欧式距离最大的像元坐标,运行中却报错:赋值具有的非单一 rhs 维度多于非单一下标数,报错代码为:D(i,j)=h*(oj-1)+oi;希望大家指点一下错误,谢谢!代码如下:
0 h1 i# k1 ^  {# j8 D0 B
  • clc;
  • close all;
  • %%
  • load test2.mat;
  • data=s;
  • [h,w,c]=size(data);
  • f=reshape(data,[h*w,c]);%重塑矩阵
  • MEI=zeros(h*w,1);%MEI矩阵
  • C=zeros(h,w);%距离矩阵
  • D=zeros(h,w);%存放d(x,y)
  • E=zeros(h,w);%存放e(x,y)
  • A=pdist2(f,f);%计算1像元到其他像元距离 边界
  • for i=2:h-2
  •     for j=2:w-2
  •         %计算每个像元到其他八个像元的累积距离
  • C(i-1,j-1)=A((j-2)*h+i-1,(j-1)*h+i-1)+A((j-2)*h+i-1,j*h+i-1)+A((j-2)*h+i-1,(j-2)*h+i)+A((j-2)*h+i-1,(j-1)*h+i)+A((j-2)*h+i-1,j*h+i)+A((j-2)*h+i-1,(j-2)*h+i+1)+A((j-2)*h+i-1,(j-1)*h+i+1)+A((j-2)*h+i-1,j*h+i+1);
  • C(i-1,j)=A((j-1)*h+i-1,(j-2)*h+i-1)+A((j-1)*h+i-1,j*h+i-1)+A((j-1)*h+i-1,(j-2)*h+i)+A((j-1)*h+i-1,(j-1)*h+i)+A((j-1)*h+i-1,j*h+i)+A((j-1)*h+i-1,(j-2)*h+i+1)+A((j-1)*h+i-1,(j-1)*h+i+1)+A((j-1)*h+i-1,j*h+i+1);
  • C(i-1,j+1)=A(j*h+i-1,(j-2)*h+i-1)+A(j*h+i-1,(j-1)*h+i-1)+A(j*h+i-1,j*h+i-1)+A(j*h+i-1,(j-2)*h+i)+A(j*h+i-1,(j-1)*h+i)+A(j*h+i-1,j*h+i)+A(j*h+i-1,(j-2)*h+i+1)+A(j*h+i-1,(j-1)*h+i+1)+A(j*h+i-1,j*h+i+1);
  • C(i,j-1)=A((j-2)*h+i,(j-2)*h+i-1)+A((j-2)*h+i,(j-1)*h+i-1)+A((j-2)*h+i,j*h+i-1)+A((j-2)*h+i,(j-2)*h+i)+A((j-2)*h+i,(j-1)*h+i)+A((j-2)*h+i,j*h+i)+A((j-2)*h+i,(j-2)*h+i+1)+A((j-2)*h+i,(j-1)*h+i+1)+A((j-2)*h+i,j*h+i+1);
  • C(i,j)=A((j-1)*h+i,(j-2)*h+i-1)+A((j-1)*h+i,(j-1)*h+i-1)+A((j-1)*h+i,j*h+i-1)+A((j-1)*h+i,(j-2)*h+i)+A((j-1)*h+i,(j-1)*h+i)+A((j-1)*h+i,j*h+i)+A((j-1)*h+i,(j-2)*h+i+1)+A((j-1)*h+i,(j-1)*h+i+1)+A((j-1)*h+i,j*h+i+1);
  • C(i,j+1)=A(j*h+i,(j-2)*h+i-1)+A(j*h+i,(j-1)*h+i-1)+A(j*h+i,j*h+i-1) +A(j*h+i,(j-2)*h+i)+A(j*h+i,(j-1)*h+i) +A(j*h+i,(j-2)*h+i+1)+A(j*h+i,(j-1)*h+i+1)+A(j*h+i,j*h+i+1);
  • C(i+1,j-1)=A((j-2)*h+i+1,(j-2)*h+i-1)+A((j-2)*h+i+1,(j-1)*h+i-1)+A((j-2)*h+i+1,j*h+i-1)+A((j-2)*h+i+1,(j-2)*h+i)+A((j-2)*h+i+1,(j-1)*h+i)+A((j-2)*h+i+1,j*h+i)+A((j-2)*h+i+1,(j-1)*h+i+1)+A((j-2)*h+i+1,j*h+i+1);
  • C(i+1,j)=A((j-1)*h+i+1,(j-2)*h+i-1)+A((j-1)*h+i+1,(j-1)*h+i-1)+A((j-1)*h+i+1,j*h+i-1)+A((j-1)*h+i+1,(j-2)*h+i)+A((j-1)*h+i+1,(j-1)*h+i)+A((j-1)*h+i+1,j*h+i) +A((j-1)*h+i+1,(j-2)*h+i+1)+A((j-1)*h+i+1,j*h+i+1);
  • C(i+1,j+1)=A(j*h+i+1,(j-2)*h+i-1)+A(j*h+i+1,(j-1)*h+i-1)+A(j*h+i+1,j*h+i-1)+A(j*h+i+1,(j-2)*h+i)+A(j*h+i+1,(j-1)*h+i)+A(j*h+i+1,j*h+i)+A(j*h+i+1,(j-2)*h+i+1)+A(j*h+i+1,(j-1)*h+i+1)+A(j*h+i+1,j*h+i+1);
  • %截取子矩阵
  • data1=C(i-1:i+1,j-1:j+1);
  • %找距离最大像元并赋值
  • maxdata=max(max(data1));
  • [rows,cols]=find(data1==maxdata);
  • ti=i-1:i+1;
  •         oi=ti(rows);
  •         tj=j-1:j+1;
  •         oj=tj(cols);
  •         D(i,j)=h*(oj-1)+oi;
  • %找距离最小像元并赋值
  • mindata=min(min(data1));
  • [rows1,cols1]=find(data1==mindata);
  • ti=i-1:i+1;
  •         oi=ti(rows1);
  •         tj=j-1:j+1;
  •         oj=tj(cols1);
  •         E(i,j)=h*(oj-1)+oi;
  •     end
  • end) ]- s/ T; F, A" n6 D6 c
  S7 y/ M' I/ h8 U6 b  ]

8 @4 v7 A/ V* H1 X. r! m. ]9 X6 y  J5 Q/ s# S: U- z
2 {! t# b+ d, y% j: ~# {

' @; E9 N7 o. A0 B0 K
, j2 f8 H2 g: M* s; C2 [: i
" {7 R' y  K4 I. h1 L- T& p

该用户从未签到

2#
发表于 2020-8-14 15:06 | 只看该作者
这个程序好复杂啊
  • TA的每日心情

    2019-11-20 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
    发表于 2020-8-14 16:21 | 只看该作者
    你的oj和oi都是1行9列,h是标量,导致 h*(oj-1)+oi 整个计算结果还是1行9列啊;可是D(i,j)仅仅是矩阵中的1个元素,你非要用多个元素给它赋值,那肯定报错啊。请重新回去反思自己设计的计算步骤到底想要实现什么功能,为什么会把大脚强往小鞋里面塞吧。

    点评

    谢谢,我再改改程序看看  详情 回复 发表于 2020-8-14 16:24

    该用户从未签到

    4#
     楼主| 发表于 2020-8-14 16:24 | 只看该作者
    mutougeda 发表于 2020-8-14 16:21% w0 h1 h9 b$ F; W/ x2 x; Z
    你的oj和oi都是1行9列,h是标量,导致 h*(oj-1)+oi 整个计算结果还是1行9列啊;可是D(i,j)仅仅是矩阵中的1 ...

    , X% d" ]; C2 U* l- J7 B谢谢,我再改改程序看看9 }: \0 Y" `4 ^# Z7 W
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-27 16:19 , Processed in 0.109375 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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