2017-05-02 2 views
0

내 코드는 다음과 같습니다. hY47x1 벡터입니다.아래 첨자 오류 : sum = sum (s)

s = h-Y; 
sum = sum(s); 
나는이 오류가 무엇입니까

:

error: sum(6057.48): subscripts must be either integers 1 to (2^31)-1 or logicals

누군가가 이유를 설명하시기 바랍니다 수 있습니까? 당신은 또한 내장 함수 sum를 사용하고자 할 때 사르 다르 우 사마에 의해 코멘트에서 언급 한 바와 같이

+2

"sum = sum (..)", 나는 옥타브에 대해 아무것도 모르고 있지만 여기에 이름을 붙일 때 문제가있을 수 있습니까? "sum ="은 식별자 "sum"을 무언가로 재정의하고 "identifier (x)"가 x가 정수 또는 논리가되어야한다고 해석기/컴파일러가 불평한다는 것을 의미합니까? 'something = sum (s) '만 시도해도 될까요? –

+3

새로 생성 된'sum' 변수로 내장'sum' 함수를 가리 켰습니다. 이름을 변경 한 후에도 동일한 오류가 나타나는 내장 함수 인 변수 또는 함수의 이름을 절대 지정하지 마십시오. –

+0

@SardarUsama –

답변

2

, 당신은 변수 이름 sum을 사용할 수 없습니다.

기본적으로 sum은 스크립트에서 작동하는 것으로 예상되는대로 사용되는 함수입니다. 이 작업을 수행 할 때 옥타브에서

는, 당신은 예를

sum = 4; % Now there is a workspace variable, sum, with the value 4 

를 들어, 내장 함수를 압도하도록 허용, 키워드 sum 이제 변수가 아닌 기능을 의미합니다. 스크립트에서 사용하지 않더라도 기본 기능을 덮어 쓰지 않는 것이 좋습니다!


는 계속하기 전에 변수를 해제해야합니다, 그냥 변수를 취소

clear sum % Now it should behave as expected. 

이유를 당신의 그늘지게를 제거하려면 작업 공간과 함께 할 것입니다. 변수 sum은 프로그램이 종료 된 후에도 작업 영역에 남아 있기 때문에 새 변수 이름을 선택 했더라도 다시 실행할 때 sum이 어떻게 해석되었는지 아직 변경했습니다. 변수를 지우면 Octave는 작업 공간에서 제거 될 때 기본 동작으로 다시 설정합니다.


요약 : 다른 변수 이름을 사용하십시오.

s = h-Y; 
mysum = sum(s); % mysum isn't a built-in, so no clashes here!