2016-08-25 3 views
-2

C 및 nx의 치수는 무엇입니까? Matlab의 코드. 루프는 nx에 대해 49 개의 요소를 생성하지만 다른 라인은 16을 제안합니까? x은 크기가 M,N 인 입력 이미지입니다.이 코드의 Matlab 행렬 치수

function y=sri1(x) 

[M,N]=size(x); 
%e=zeros(M,N); 
for i=1:2 
    for j=1:2 
     y(i:2:2*M,j:2:2*N)=x; 
    end 
end 

T=5; 
ix=[-1 -1 1 1]; 
iy=[-1 1 -1 1]; 
mx=[0 0 1 1]; 
my=[0 1 0 1]; 
cnt=1; 
for i=-2:4 
    for j=-2:4 
     nx(cnt)=i;ny(cnt)=j;cnt=cnt+1; 
    end 
end 
%nx=[0 1 1 0 -1 -1 0 1 2 2 0 1 -1 -1 2 2]; 
%ny=[0 0 1 1 0 1 -1 -1 0 1 2 2 -1 2 -1 2]; 

th=8; 
for i=T:M-T 
    for j=T:N-T 
     for k=1:4 
     C(:,k)=diag(x(i+ix(k)+nx,j+iy(k)+ny)); 
    end 
     r=diag(x(i+nx,j+ny)); 
     s=diag(x(i+mx,j+my)); 
     if det(C'*C)==0|var(s)<th 
     a=ones(4,1)/4; 
     else 
     a=inv(C'*C)*(C'*r); 
     %a=fun(C,r); 
     end 
     y(2*i,2*j)=sum(a.*s); 
     if y(2*i,2*j)<0|y(2*i,2*j)>255 
     a=ones(4,1)/4;y(2*i,2*j)=sum(a.*s); 
     end 
    end 
end 
+0

주석 처리 된 줄이 맞습니까? 'i = -2'와'j = -2'를 루프의 시작 값으로 사용 하시겠습니까? –

+0

이것은 주어진 코드입니다. 불행히도 어디에서 왔는지 전혀 알지 못합니다. – ArekBulski

+0

그러면 과제/문제에 대한 자신 만의 코드를 작성하는 것이 좋습니다! –

답변

1

벡터 및 행렬의 크기를 확인하려면 size 명령을 찾아 보는 것이 좋습니다. 예를 들어 마찬가지로

:

size(C) 
size(nx) 

당신은 또한 객체 자체를 인쇄하거나 프로그램이 제대로 작동하는지 파악하기 위해, MATLAB에서 디버깅 도구를 사용할 수 있습니다. 예를 들어 x의 지정된 부분이 어떻게 보이는지, 대각선이 하나씩 어떻게 보이는지 확인하는 등의 다른 부분을 개별적으로 살펴보십시오.

귀하의 경우에는 nx에 정확하게 49 개의 항목이있는 것으로 보입니다. 각 루프는 각 입력 -2, -1, 0, 1, 2, 3, 4로 7 번 실행됩니다.

C은 49로 끝나는 것 같습니다. 내부 루프의 각 열 행렬의 1에서 4는 x 행렬의 49x49 부분의 대각선으로 설정됩니다. 이것은 물론 49 요소 길이 벡터입니다.