生物と計算機のあいだ

個人的にうまくいったかなとおもったことを書いています。うまくいかなかったらごめんなさい。

MATLABで任意の配列の全体に処理を行う

ある配列の最大値・最小値を取ってきたり、allやanyを使って非ゼロの判定をする時に、行ごとや列ごとではなく、全体を一度処理したいことがあると思います。

% 配列の定義
>> A = rand(3)
A =

    0.2551    0.8909    0.1386
    0.5060    0.9593    0.1493
    0.6991    0.5472    0.2575

% 最大値の取得
>> max(A(:))
ans =

    0.9593

(:)は配列全体をひとつの列として処理するという処理になるみたいです。こんな書き方があるのを知りませんでした。。
すっきりした書き方を知るとコードの可読性も上がるし、ちゃんとドキュメントを読むのが重要ですね。
今まではこんな感じで配列の次元の数だけmax関数を使うという、なんとも原始的な方法を使っていました。(恥)

>> max(max(A))
ans =

    0.9593