Используйте вектор для индексации матрицы без линейного индекса

день, яЯ пытаюсь найти способ использовать вектор из [x, y] точек для индексации из большой матрицы в MATLAB. Обычно я бы конвертировал нижние индексы в линейный индекс матрицы (например,Используйте вектор как индекс для матрицы) Однако матрица 4-мерная, и я хочу взять все элементы 3-го и 4-го измерений, которые имеют одинаковое 1-е и 2-е измерение. Позвольте мне, надеюсь, продемонстрировать на примере:

Matrix = nan(4,4,2,2); % where the dimensions are (x,y,depth,time)
Matrix(1,2,:,:) = 999; % note that this value could change in depth (3rd dim) and time (4th time) 
Matrix(3,4,:,:) = 888; % note that this value could change in depth (3rd dim) and time (4th time) 
Matrix(4,4,:,:) = 124;

Теперь я хочу иметь возможность индексировать с помощью индексов (1,2) и (3,4) и т. Д. И возвращать не только 999 и 888, которые существуют вMatrix(:,:,1,1) но содержание, которое существует вMatrix(:,:,1,2)Matrix(:,:,2,1) а такжеMatrix(:,:,2,2)и т. д. (IRL, размерыMatrix может быть больше похожеsize(Matrix) = (300 250 30 200)

Я неЯ не хочу использовать линейные индексы, потому что я хотел бы, чтобы результаты были похожими на вектор. Например, я хотел бы получить результат, который выглядит примерно так:

ans(time=1)
999 888 124
999 888 124
ans(time=2)
etc etc etc
etc etc etc

Также хотелось бы добавить, что из-за размера матрицы I 'Я имею дело со скоростью, проблема здесь - поэтому яЯ хотел бы использовать индексы индекса для индексации данных.

Я должен также упомянуть это (в отличие от этого вопроса:Доступ к значениям с использованием подписок без использования sub2ind) поскольку мне нужна вся информация, хранящаяся в дополнительных измерениях 3 и 4 индексов i и j, я недумаю, что немного быстрее версияsub2ind все равно не резал бы это ..

Ответы на вопрос(2)

Ваш ответ на вопрос