2015-02-03 2 views
0

그래서 두 개의 입력, 매트릭스와 값을 취하여 주어진 모든 인스턴스를 제외한 매트릭스의 모든 값의 합계를 반환하는 matlab 함수를 만들려고합니다. 값.매트릭스 (Matlab)의 모든 값의 합

function [total] = sumAllExcept(matrix, except) 
    total = 0; 
    for i = 1:size(matrix, 1) 
     for k = 1:size(matrix, 2) 
      if(matrix(i, k) ~= except) 
       total = total + matrix(i,k); 
      end 
     end 
    end 
end 

프로그램을 실행하려고 할 때 나는 수신하고 오류 메시지는 다음과 같습니다 : 지금까지 내가 작성한 코드입니다. "정의되지 않은 함수 'sumAllExcept' '더블'유형의 입력 인수에 대해" 당신이 저에게 무엇이 잘못 됐는지 보여주고 당신이 할 수있는 일을 고치는다면 크게 감사 할 것입니다. 고맙습니다!

+2

이 문제에 대한 대답은 하나의 라이너입니까? 그냥 합계 (sum (matrix ~ = except))가 나를 위해 모든 것을 처리합니까? 내 바보 같은 질문에 대해 미안해. 난 정말 다른 프로그래밍 언어에 비해 matlab을 얻을하지 않는다 –

+0

오 기다려! 나는 틀렸다! 나는 당신이 카운트를 찾고 있다고 생각했습니다! 내 사과. – Divakar

답변

2

합계 logical indexing 사용 except을 필터링 후의 배열 :

total = sum(matrix(matrix ~= except)); 

matrix에 논리 인덱스 matrix ~= except를 사용한 결과 때문에 단지 하나의 sum는 필요, 열 벡터를 리턴한다.


오류 "Undefined function 'sumAllExcept' for input arguments of type 'double'.는"인해 MATLAB 함수의 경로 상에 존재하지 않거나 함수명 sumAllExcept 파일 이름 (즉, sumAllExcept.m)에 일치하지 않는 것으로 보인다.

+0

불쌍한 요청에 죄송하지만 전체 기능을 작성할 수는 있습니다. 여전히 동일한 오류 메시지가 표시됩니다. 많은 시간을 내 주셔서 감사합니다 –

+0

"전체 기능"이 무슨 뜻인지 잘 모르겠습니다. 그 코드 한 줄을'sumAllExcept' 함수에 넣으면 루프와 if 문을 대체 할 수 있습니다. 난 정의되지 않은 함수 오류에 대한 메모를 추가 않았다. – TroyHaskin

+1

TroyHaskin에게 감사드립니다. 그 모두가 정말로 도움이되었습니다. 기능이 완벽하게 작동하고 많은 시간과 머리카락을 찢어 냈습니다. –