В MATLAB, для 2D-массива, как мне получить индекс, который будет сначала перебирать другое измерение
У меня есть алгоритм, который заполняет массив 2x3 подплота, используя один индекс i=1:6
,
Согласно документации,
subplot(m,n,p)
делит текущую фигуру на сетку m-на-n и создает оси для подзаговора в позиции, указанной параметром p. MATLAB® нумерует свои субплоты по строкам, так что первый субплот является первым столбцом первой строки, второй субплот является вторым столбцом первой строки и так далее.
Таким образом, при итерации по массиву субплота 2x3 с помощью i=1:6
, приведет к следующему порядку строк:
+---+---+---+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
+---+---+---+
Если я хочу заполнить подзаголовки в основном порядке столбцов, мне нужно будет преобразовать мой индекс 1 2 3 4 5 6 в 1 4 2 5 3 6.
Как я могу это сделать?
1 ответ
Вы можете просто создать двумерный массив индексов, который 3 x 2
перенести это быть 2 x 3
а затем столбец-мажор стал мажор-строкой относительно исходной матрицы.
indices = reshape(1:6, [], 2).';
Затем вы можете создавать свои подсюжеты, просматривая эти индексы
for k = 1:numel(indices)
subplot(2, 3, indices(k))
end