sub2ind -> out of range subscript

조회 수: 24 (최근 30일)
Jean-Edouard Simonin
Jean-Edouard Simonin 2011년 3월 24일
Hi ! I am a student and my project is about fingerprint analysis and minutia recognition. First, I have to understand each lines of the program sent by Florence Kussener : http://www.mathworks.com/matlabcentral/fileexchange/16728-fingerprint-application This application works great with the joined picture but when I download a new one, the program crashes with this error :
??? Error using ==> sub2ind at 58 Out of range subscript.
Do you have an idea ? The botch pictures are square and gray scale...I don't find the problem
Regards
PS : I am French and I my English is poor, sorry for that. And if you can answer me, please, I have to understand you so use a basic English

채택된 답변

Jean-Edouard Simonin
Jean-Edouard Simonin 2011년 3월 24일
Thanks for your fast answer. It seems that with a square matrix the problem is solved (but I don't understand why). Unfortunately, some lines later a new problem :
??? Subscripted assignment dimension mismatch. Error in ==> fingerprint at 124 OrientationTerm(ind,1)=Table(i,j);
for ind=1:length(CentroidTermX) Klocal=K(CentroidTermY(ind)-2:CentroidTermY(ind)+2,CentroidTermX(ind)-2:CentroidTermX(ind)+2); Klocal(2:end-1,2:end-1)=0; [i,j]=find(Klocal); recherche des pixels (à l'intérieur de la fenêtre) à 1 restants OrientationTerm(ind,1)=Table(i,j); end
Do you know the source of the problem ?
  댓글 수: 3
Walter Roberson
Walter Roberson 2011년 3월 24일
It appears to me that Klocal might have more than one non-zero location. The find() would return multiple values in that case, and you would then try to store those multiple values in the single location OrientationTerm(ind,1)
You might want to use find(Klocal,1,'first')
Jean-Edouard Simonin
Jean-Edouard Simonin 2011년 3월 28일
After verification, it seems you were right Walter. Indeed, there are sometimes more than one non-zero location, then it crashes !
Thak you very much for your help and have a nice day

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Matt Fig
Matt Fig 2011년 3월 24일
The error means exactly what it says. Here is an example where we try to access element (4,6) in a 3-by-3 matrix. It should produce the same error you experienced.
sub2ind([3,3],4,6)
Now as to why the program gets this error, it is hard to say. Perhaps the author hard-coded the conversion in and so when a new array is used that is smaller than the coding allows, the function errors.
  댓글 수: 2
Walter Roberson
Walter Roberson 2011년 3월 24일
The first argument to sub2ind() needs to be the array size, not the array itself...
Matt Fig
Matt Fig 2011년 3월 24일
Thanks, Walter! I don't know how I missed that one, though it did give the 'correct' error for what I was doing...

댓글을 달려면 로그인하십시오.


Jean-Edouard Simonin
Jean-Edouard Simonin 2011년 3월 25일
Thank you for your answers. I tried this part of code but the same problem comes again... Any other idea ?

카테고리

Help CenterFile Exchange에서 Numeric Types에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by