|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) }4 `% c. m6 T, G3 A+ B8 D. r9 A9 h0 G
写了一个程序,用来寻找欧式距离最大的像元坐标,运行中却报错:赋值具有的非单一 rhs 维度多于非单一下标数,报错代码为:D(i,j)=h*(oj-1)+oi;希望大家指点一下错误,谢谢!代码如下:
; j: U9 s9 E+ C# s2 l' G6 w- 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
- end3 }, Q# ?! z% z/ ?& t0 H7 P: z/ R, m! p
# w( g* C- w: b+ t0 o# t( A" l3 ]. A" \4 ]
0 z; `8 d, b% m* l/ Q
; n8 t: F+ G& J1 T# d. z
) G6 M$ G' z* r# r: N7 u
$ B( ?4 D, W4 p7 \
5 i6 P3 E& C. `/ [ |
|