| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
 
2 W. l2 r) ^* \3 J0 ?% o写了一个程序,用来寻找欧式距离最大的像元坐标,运行中却报错:赋值具有的非单一 rhs 维度多于非单一下标数,报错代码为:D(i,j)=h*(oj-1)+oi;希望大家指点一下错误,谢谢!代码如下:& A! Y3 c) Z4 H& q- K9 o 
- 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$ Q# T0 q  Y0 d2 m2 A
 
 
  
0 D' t, m  v9 c( H8 v7 Y2 D0 k* B, N# C* c3 |1 a( V! v+ T 
+ S* @6 N1 X% d 
4 y: I& @4 W& }( p+ C# f$ H2 G  B; i 
  p5 Y, ]/ ~# j5 Z1 f6 r/ J8 D$ ] 
 
 
/ D0 m2 ~3 e9 |9 f. E, L4 `7 x" r1 C3 }9 I 
 |   
 
 
 
 |