2013-10-02 3 views
2

나는 오류를 얻을Matlab, 추가 벡터를 만드는 대신? 나는이있는 경우

sum(vector) == cumsum(vector)(length(vector)) 

>> Error:()-indexing must appear last in an index expression. 

알아요 나는 다만 수 : 논리적 1.

를 반환합니다

Vec1 = cumsum(mat); 
sum(mat) == Vec1(length(mat)) 

가에 모든 것을 얻을 수있는 대안이 있는가 한 줄로?

+0

왜 "모든 것을 한 줄에"가져와야합니까? – horchler

+0

같은 기능을 수행하는 변수가 줄어들면 좋을 것이라고 생각했습니다. 나는 모든 것이 두 줄로 보인다고 생각합니다. – user2839806

+0

이것은 두 줄이 더 좋은 경우 중 하나입니다. 그러나'()'연산자의 명명 된 형식 인 subsref를 사용하여 하위 스크립트를 작성하는 방법이 있습니다. 내 대답을 보라. 정말로 사소한 것입니다. – chappjc

답변

2

글쎄, 당신은, 한 줄에

sum(vec) == subsref(cumsum(vec),struct('type','()','subs',{{numel(vec)}})) 

그것을 할 절대적으로 결정됩니다 그러나 이것은 일반적으로 (즉 {}, (), .를 첨자 연산자를 오버로드에 사용되는 subsref의 경계선 남용 인 경우) 사용자 정의 클래스.