В 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
Другие вопросы по тегам