我想通過訪問fortran中的邊界元素來檢查我的數組是否返回廢話。我想檢查這些值是否小於1,如果是,請將它們更改爲1。在陣列上操作元素
這是一張我的代碼引起的問題:
lastNeighLabel=(/clusterLabel(jj-1,kk,ll), clusterLabel(jj,kk-1,ll), clusterLabel(jj,kk,ll-1)/)
LastNeighLabel包含集羣標籤(介於1到n,其中n isthe發現獨特的獨立簇的總數)在x的最後一個鄰居, y,z方向。
當jj
或kk
或ll
是1,他們嘗試和在陣列中訪問第0個元素,並且如在陣列1 FORTRAN
計數,它試圖破壞宇宙。我目前糾結在大約8個if/elseif語句試圖爲每個可能性編碼。但我希望在每個元素上都有一種操作方式。所以基本上我想說where((/jj-1,kk-1,ll-1/).lt.1) do clusterLabel(jj-1,kk,ll)=0 etc
取決於哪個元素導致問題。
但我不能想辦法做到這一點,因爲哪裏只會操縱傳遞給它的變量,而不是在同一個索引處的不同數組。或者我錯了?
如果這沒有意義,會很樂意編輯。
你想有例如lastNeighLabel =(/ 0,clusterLabel(JJ,KK-1,LL),clusterLabel(JJ,KK,LL-1)/)如果JJ == 0? –
是的,這就是我所追求的。 – Pureferret