2014-11-09 1 views
-1

저는 matlab를 처음 사용했습니다. 함수를 작성했습니다. 내가이 오류를 얻을위한 내가 처음에 작업 공간 내 기능을 실행하면루프에 대한 MATLAB 오류 때문에 "범위를 벗어난 인덱스에 액세스하려고했습니다 ..."

??? Attempted to access XX(461,:); index out of bounds because 
size(XX)=[460,440,3]. 

Error in ==> FOH_Zoom at 10 
XX(j,:)=(XX(2*j-1,:)+XX(2*j+1,:))/2; 

을이 제 기능입니다 :

문제가 무엇인지
function XX = FOH_Zoom(img) 

X = ones(size(img)); %make a matrix of ones as size as image 
XX=imresize(X,2); %make size of matrx double 
[a,b]=size(X); %get the size of matrix 
XX(1:2:end,1:2:end)=img(:,:); % fill odd rows and columns with original image data 
[m,n]=size(XX); 

for j=1:m-1 
XX(j,:)=(XX(2*j-1,:)+XX(2*j+1,:))/2; 
end 

for i=1:n 
XX(:,i)=(XX(:,2*i-1)+XX(:,2*i+1))/2; 
    end 

imshow(XX); % show image 
    title([num2str(m),' *** ',num2str(n)]); 
    end 

, 당신이 생각하십니까? 정말 도움이 어떤 도움을 안부.

+0

행렬 'img'이 3D (즉, RGB 이미지) 인 경우 코드가 깨집니다. – Amro

+0

답장을 보내 주셔서 감사합니다.하지만 이미지가 RGB가 아니므로 회색 음영입니다. – delkook

답변

0

귀하의 XX가 3D이기 때문에이 같은 size을 사용해야합니다,

[m,n,~]=size(XX); 

때문에 :

XX=zeros(460,440,3); 
[m,n]=size(XX) 

m = 460 
n = 1320 

동안,

[m,n,~]=size(XX) 

m = 460 
n = 440 

두 번째 문제

,536,913 선 (10) 당신이에서 63,210

,

XX(j,:)=(XX(2*j-1,:)+XX(2*j+1,:))/2; 

m = 231 다음 2xm-1 = 461, 당신은 바인딩에서 오류를 얻을 것이다,

난 당신이 뭘 원하는지 알고 있지만 for j = 1 : m/2을 변경하지 않습니다 for i = 1 : n/2 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다 .i [m, n] = 크기 (XX)를 [m, n, ~] = 크기 (XX)로 변경했지만이 오류가 발생합니다. "오류 : 파일 : FOH_Zoom.m Line : 7 열 : 7 불균형 또는 예기치 않은 괄호 또는 대괄호. " – delkook

+0

@delkook, 어느 쪽이 column7 line7입니까? '[m, n, ~] = size (XX);와 같은 줄? 확실합니까? – Rashid

+0

이 줄 [m, n, ~] = 크기 (XX); – delkook

관련 문제