[英]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 中使用i
和j
作為循環索引。 兩者都是虛數單位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.