|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 |; ^% y( r/ P# y" {2 s7 N% O
写了一个程序,用来寻找欧式距离最大的像元坐标,运行中却报错:赋值具有的非单一 rhs 维度多于非单一下标数,报错代码为:D(i,j)=h*(oj-1)+oi;希望大家指点一下错误,谢谢!代码如下:2 ?7 U. f4 B# P Y9 ]. r, 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
$ G9 C) E* h, l6 i: v ; v, `! ?; P! ?, o
+ L( Z/ p. j0 |4 ^
6 d% f+ g! r" P5 f. }: z
' h+ O5 K+ O4 C9 S( C2 P) G5 u, {
; s3 F' q+ \4 f3 v, N
0 b8 a9 U0 ?; K. g
- ~* @) p4 H B5 w |
|