2017-10-17 74 views
0

我正在寫一個方法,它接受一個二元數組和一個int行數作爲參數,並返回給定行中元素的最高值。用變量切片多維數組

它看起來像這樣:

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

我遇到的問題是,當我與

A[:i,:] 

切片陣列我得到的參數錯誤,因爲:i使i得到區別對待。

代碼工作在向另一個方向

A[:,i,:] 

是否有一種方式來逃避結腸?所以i被視爲冒號後的變量?

+1

爲了獲得更好的性能,最好使用**視圖**或使用'for'循環明確地編碼它 –

+0

您是這麼認爲的?值得在實踐中測試。 –

+0

'A [i,:''創建一個新的向量。對?這是浪費。 –

回答

3

你正在做一些奇怪的冒號。在這種情況下,您使用的符號:i不是值i。只需getHighestInRow(A,i) = maximum(A[i,:])應該工作。

編輯:由於丹Getz在這個問題的評論中說,getHighestInRow(A,i) = maximum(@view A[i,:])是更有效,雖然,因爲切片將分配一個臨時不必要的數組。

+1

謝謝邁克爾,看起來我需要閱讀我的切片。 –