2016-12-21 1 views
0

matlab에 구조를 사용하고 싶지만 첫 번째 반복에서는 올바르게 실행되고 다른 반복에서는 해당 메시지를 제공합니다. 필드구조를 matlab에 사용하십시오

× 2 구조체 배열 :

내 코드는 다음과 같습니다

for i=1:lenfd 
    currow=rees(i,:) 
    maxcn=max(currow) 
     if maxcn~=0 
     maxin=find(currow==maxcn) 
     ress(i).x =maxin 
     end 
    end 

당신을 감사합니다.

답변

3

경고 또는 오류 메시지가 아닙니다. 이것은 MATLAB에서 연산 결과를 출력하는 것입니다. 그것이 아니라면 기본적 명령 세미콜론를 첨부하여이를 억제하는 것을 수행합니다

for ii = 1:lenfd 

    currow = rees(ii,:); % <=== NOTE: semicolons at the end 
    maxcn = max(currow); 

    if maxcn ~= 0 
     ress(ii).x = find(currow==maxcn); 
    end 

end 

참고 max() 2 개 출력들을 가질 수 있다는 최대 발생 배열에 제 인덱스되는 제 2 출력. 최대 값이 한 번만 발생한다는 것을 미리 아는 경우 find()으로 전화를 건너 뛰고 max()의 두 번째 출력을 사용할 수 있습니다.

+0

감사합니다. 나는 각 단계마다 결과를보고 싶어하기 때문에 세미콜론을 사용하지 않는다. 각 반복 당 최대 값은 하나의 값을 반환하지만 maxcn은 많은 값을 포함 할 수 있습니다. 내 코드 언젠가이 오류를 제공 " 비 구조 배열 개체 필드 할당." – sara

+0

@sara 이것이 오류 메시지라면, 왜 다른 메시지를 묻는거야? –

+0

둘 다이 코드의 다른 실행에 표시됩니다. – sara