2017-10-17 1 views
0

2 차원 배열과 매개 변수로 int 행 번호를 받아들이고 주어진 행의 요소 중 가장 높은 값을 반환하는 메서드를 작성했습니다.변수로 다차원 배열 자르기

그것은 다음과 같습니다

function getHighestInRow(A, i) 
     return(maximum(A[:i,:])) 
end 

난 데 문제가 내가

A[:i,:] 

으로 배열 슬라이스 때 :ii는 다르게 취급받을 수 있기 때문에 인수 오류가 발생합니다.

코드는 콜론을 탈출 할 수있는 방법이 있나요

A[:,i,:] 

와 다른 방향에서 작동? 그래서 i은 콜론 뒤에 변수로 처리됩니까?

+1

더 나은 성능을 얻으려면 **보기 **를 사용하거나'for' 루프를 사용하여 코드를 명시 적으로 코딩하는 것이 더 낫습니다. –

+0

그렇게 생각하십니까? 실제로 테스트할만한 가치가 있습니다. –

+0

'A [i, :]'는 새로운 벡터를 만듭니다. 권리? 그건 낭비입니다. –

답변

3

콜론으로 이상한 일을하고 계십니다. 이 경우 i이 아닌 기호 :i을 사용하고 있습니다. 그냥 getHighestInRow(A,i) = maximum(A[i,:])가 작동합니다.

편집 : Dan Getz가 질문에 대한 의견에서 말하듯이 getHighestInRow(A,i) = maximum(@view A[i,:])이 더 효율적이지만 슬라이스가 일시적인 불필요한 배열을 할당하므로 더욱 효과적입니다.

+1

감사합니다 마이클, 내 슬라이싱을 읽을 필요가있는 것처럼 보입니다. –