Важно хранить данные таким образом, чтобы их можно было найти на используемых языках. Язык C хранится в основном порядке строк (сначала идет вся первая строка, затем вся вторая строка ...), причем каждый индекс работает от 0 до его измерения-1. Таким образом, порядок массива x [2] [3] равен x [0] [0], x [0] [1], x [0] [2], x [1] [0], x [1] [ 1], х [1] [2]. Таким образом, в языке C x [i] [j] хранится в том же месте, что и 1-мерная запись массива x1dim [i * 3 + j]. Если данные хранятся таким образом, их легко получить на языке C.
Фортран и MATLAB разные. Они хранятся в главном порядке столбцов (сначала идет весь первый столбец, затем весь второй ряд ...), и каждый индекс проходит от 1 до своего измерения. Таким образом, порядок индексов обратен C, и все индексы на 1 больше. Если вы храните данные в порядке языка C, FORTRAN может найти X_C_language [i] [j], используя X_FORTRAN (j + 1, i + 1). Например, X_C_language [1] [2] равен X_FORTRAN (3,2). В одномерных массивах это значение данных находится в X1dim_C_language [2 * Cdim2 + 3], что соответствует позиции X1dim_FORTRAN (2 * Fdim1 + 3 + 1). Помните, что Cdim2 = Fdim1, потому что порядок индексов обратный.
MATLAB такой же, как FORTRAN. Ada такая же, как C, за исключением того, что индексы обычно начинаются с 1. Любой язык будет иметь индексы в одном из этих заказов C или FORTRAN, а индексы будут начинаться с 0 или 1 и могут быть соответствующим образом скорректированы для получения сохраненных данных.
Извините, если это объяснение сбивает с толку, но я думаю, что это точно и важно знать программисту.