簡體   English   中英

MATLAB 數組索引和切片

[英]MATLAB array indexing and slicing

我正在寫當前在 C 中重寫 Matlab 腳本。 當我到達 Matlab 腳本的最后幾行時,將執行一個 for 循環並遍歷一個數組。 由於我試圖在 C 中重寫程序,因此 Matlab 腳本中的切片符號讓我感到困惑。 我在下面附上了困擾我的代碼行。

我將如何在僅使用 i 和 j 的嵌套 for 循環索引中編寫這行代碼,因為您顯然無法在 c 中切片。 僅供參考 u = 1,Ubc 是大小為 (NX+2, NY+2) 的二維數組。 其中 NX = NY = 40。

下面是 Matlab 中的代碼行,我需要轉換為 for 循環索引。

Nx = 40;
Ny = 40;
u = 1;
Ubc = rand(Nx + 2, Ny + 2);
% First the i interfaces
F =   0.5*    u *( Ubc(2:Nx+2,2:Ny+1) + Ubc(1:Nx+1,2:Ny+1)) 
     - 0.5*abs(u)*( Ubc(2:Nx+2,2:Ny+1) - Ubc(1:Nx+1,2:Ny+1));

您可以在循環中計算相同的值

Nx = 40;
Ny = 40;
u = 1;
Ubc = rand(Nx + 2, Ny + 2);
F = zeros(Nx + 1, Ny);
for z1 = 1 : Nx + 1
    for z2 = 1 : Ny
        F(z1, z2) =   0.5*    u *( Ubc(z1 + 1, z2 + 1) + Ubc(z1, z2 + 1)) 
                    - 0.5*abs(u)*( Ubc(z1 + 1, z2 + 1) - Ubc(z1, z2 + 1));
    end
end

您不應該在 Matlab 中使用ij作為循環索引。 兩者都是虛數單位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM