Ваш подход к val(1, 2, :)
правильный. Тем не менее, размер выпускаемой продукции составляет 1 x 1 x 4
. То, что вы хотите сделать, это удалить (ненужные) измерения длины 1. Для этого предназначена функция squeeze
.
Имея 3-мерный массив val
, такой как ваш и фиксированные индексы x
, y
для первого и второго измерений, мы просто окружаем вашу команду squeeze
:
% 3-dimensional array
val = reshape(1:36, 3, 3, 4)
% Squeezed output for fixed x, y in dimensions 1 and 2
x = 1;
y = 2;
out3d = squeeze(val(x, y, :))
Вывод следующий:
val =
ans(:,:,1) =
1 4 7
2 5 8
3 6 9
ans(:,:,2) =
10 13 16
11 14 17
12 15 18
ans(:,:,3) =
19 22 25
20 23 26
21 24 27
ans(:,:,4) =
28 31 34
29 32 35
30 33 36
out3d =
4
13
22
31
Это работает для произвольных измерений и количества индексов.
4-мерный массив с двумя фиксированными индексами даст 2-мерный вывод:
% 4-dimensional array
val = reshape(1:108, 3, 3, 4, 3)
% Squeezed output for fixed x, y in dimensions 1, 2
x = 1;
y = 2;
out4d = squeeze(val(x, y, :, :))
Выход:
val = (omitted here)
out4d =
4 40 76
13 49 85
22 58 94
31 67 103
4-мерный массив с тремя фиксированными индексами снова выдаст 1-мерный вывод:
% 4-dimensional array
val = reshape(1:108, 3, 3, 4, 3)
% Squeezed output for fixed x, y, z in dimensions 1, 2, 3
x = 1;
y = 2;
z = 1;
out4d = squeeze(val(x, y, z, :))
Выход:
val = (omitted here)
out4d =
4
40
76
Надеюсь, это поможет!