2014-03-06 4 views
0

저는 자바 프로그래머이고 matlab에 대한 배경 지식이 없으므로 MATLAB에서이 코드 라인을 사용하여 정말 우둔합니다. 내가 코드를 실행하면 오류 가지고 :matlab 코드를 해석하십시오.

??? Undefined function or variable 'nfile'. 

Error in ==> texture_id at 29 
fprintf(' \nneural network processing \n',nfile); 

내가 'demo'는 부울입니다 'path' 문자열을 저장하는 변수임을 이해하지만, 다른 라인에 대해, 나는 그것이 무엇을 생각하고 싶지 않아요을 .. . 도와 주실 수 있고 각 라인을 설명해 주시겠습니까?

path = 'C:\Users\Dais\Documents\MATLAB\Data Sets\'; 

demo = true; 

elfile = dir('*.jpg'); 

[lu ri] = size(elfile); feat=zeros(lu,29); nomf=cell(lu,1); 
for nfi = 1:lu 
    nfile = elfile(nfi).name; 
    fprintf(' feature extraction file: %s \n',nfile); 
    nomf{nfi} = upper(nfile); 
    feat(nfi,:) = feature_ex([path nfile],demo); 
end 

fprintf(' \nneural network processing \n',nfile); 

답변

1

여기서 일어나는 일은 elfile = dir('*.jpg');이 로컬 디렉토리에서 jpeg를 찾지 못해서 lu이 비어 있으며 nfile이 채워지지 않습니다. 코드에 중단 점을 배치하고 이것을 확인하십시오. 내가 루프를 설정 할 방법은 다음과 같이 될 것이다 :

for nfi=1:numel(elfile) 

@Rody Oldenhuis 말했듯이, 사용 문서 및 각 기능에 대한 자세한 내용을 elarn하는 데 도움이 (또는 커서가 함수 이름에있을 때 F1를 누름) 그러나 이것은 당신을 시작할 것입니다 ..

%Looks for all files with extention .jpg in current directory 
elfile = dir('*.jpg'); 

%lu and ri hold the rows, column lengths of elfile respectively 
[lu ri] = size(elfile); 

%creates an array of zeros of dimensions lu rows by 29 columns 
feat=zeros(lu,29); 

%creates an empty cell array (doc cell) dimensions lu rows by 1 
nomf=cell(lu,1); columns 
for nfi = 1:lu           %look through all files 
    nfile = elfile(nfi).name;       %get index nfi file 
    fprintf(' feature extraction file: %s \n',nfile); %print string 
    nomf{nfi} = upper(nfile);       %upper case 
    feat(nfi,:) = feature_ex([path nfile],demo);  %some external function 
end 

fprintf(' \nneural network processing \n',nfile);  %print string 
1

오히려 MATLAB에 대한 모든 모든 것을 설명하는 것보다, 내가 이런 말 것 : MATLAB이 상호 작용

여기에 코드입니다! 그리고 MATLAB에 돈을 지불하는 이유 중 하나는 설명서가 훌륭하고 도움을 얻는 것이 매우 쉽다는 것입니다.

예를 들어, MATLAB 명령 줄에 help <command>을 입력하고 해당 명령에 대한 간단한 도움말을 얻거나 doc <command>을 입력하여 예제 및 데모가 포함 된 전체 설명서를 얻을 수 있습니다. Google과 브라우저를 선호하는 경우 문서 전체가 온라인 상태입니다.

문제가있는 스크립트 나 함수 또는 클래스가있는 경우 dbstop if error을 실행하여 오류가 발생했을 때 디버거에 넣은 다음 오류가 발생하기 직전에 모든 변수의 내용을 볼 수 있습니다. 오류를 조사하기 위해 새 명령을 입력하십시오. 중단하려는 위치 옆에있는 줄 번호를 클릭하여 중단 점을 설정할 수 있습니다. dbstep은 한 단계 올라가고 dbup은 레벨 이동을합니다. doc dbstop을보십시오.

코드의 일부를 선택하고 F9를 누르면 해당 코드 행을 실행할 수 있습니다. 이는 명령 창에 코드를 복사하여 붙여 넣는 것과 동일하므로 정의되지 않은 변수 (및 유사한 문제)와 같은 방식으로 문제가 발생하는 경우가 많습니다 (이 경우 또는 이와 유사한 것이 사용자의 특정 사건에서 일어난 것으로 의심됩니다. 게시 한 코드가 오류를주지 않아야 함).

관련 문제