2017-10-17 7 views
0

2倍の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

マイケルありがとう、私は私のスライスを読み上げる必要があるように見えます。 –