【发布时间】:2021-05-30 05:12:48
【问题描述】:
我正在编写当前用 C 重写 Matlab 脚本。当我到达 Matlab 脚本的最后几行时,将执行一个 for 循环并遍历一个数组。因为我试图用 C 重写程序,所以 Matlab 脚本中的切片符号让我感到困惑。我在下面附上了困扰我的代码行。
我将如何在嵌套 for 循环索引中编写这行代码,仅使用 i 和 j,因为您显然不能在 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));
【问题讨论】:
-
Ubc 和 F 数据如何存储在你的 C 代码中?作为一维数组,您可以使用单 [ ] 索引获取元素,还是作为二维数组,您可以使用双 [ ][ ] 索引获取元素?您是否希望数据以列优先顺序存储,就像在 MATLAB 端一样? C 代码是否会通过 mex 例程与 MATLAB 通信,您将在 MATLAB 和 mex 例程之间来回发送数据?