2017-10-17 75 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

谢谢迈克尔,看起来我需要阅读我的切片。 –