私の質問は、私が描いた結論が正しいことを確認し、誰もスマートな "回避策"を持っているかどうかを確認するための探求です。リストを介した配列アクセス
私の問題は、maxloc
を使用して配列の最大値の位置を抽出し、この結果を使用して他の配列の対応する要素を読み取ろうとすることから始まります。擬似コード、すなわち:これは、しかし(彼は(N、N)配列で使用された)エラー
Error: Rank mismatch in array reference at (1) (1/2)
を返し
c = b(maxloc(a))
を私はいくつかのテストを行なったし、私はこのことを発見確かに動作しません。
program h
integer :: a(2,2)
integer :: id(2),id2(2)
a(1,1) = 1; a(1,2) = 2; a(2,1) = 3; a(2,2) = 2
id = maxloc(a)
write(*,*) a(id(1),id(2))
end program h
それが動作し、誰もが幸せです: 私の結論は、あなたがこのような何かをする必要があるということです。まあ、私を除いて。私はそれを行うより良い方法があるかどうかを知りたい。私が紛失しているものはありますか?問題の簡単な解決策。
'maxloc'を2回呼び出す方法はありませんか? – chw21
どちらの方法?仲間?いいえ、そうではありません。 –
さて、 'associate'の仕組みが分かりませんし、とにかく最適化されているかもしれませんが、もしそうでなければ、それぞれのインデックスに対して' maxloc'を個別に呼び出さないのでしょうか? – chw21