Как я могу определить 3D матрицу в MATLAB?
Например, матрица размера (8 x 4 x 20) или добавляет 3-й размер к существующей 2D матрице?
A = zeros(20, 10, 3); %# Creates a 20x10x3 matrix
B = zeros(4,4);
C = zeros(size(B,1), size(B,2), 4); %# New matrix with B's size, and 3rd dimension of size 4
C(:,:,1) = B; %# Copy the content of B into C's first set of values
нули - это только один из способов создания новой матрицы. Другим может быть A(1:20,1:10,1:3) = 0
для 3D матрицы. Для подтверждения размера ваших матриц вы можете выполнить: size(A)
, что дает 20 10 3
.
Не существует явного ограничения на количество размерностей матрицы.
Если вы хотите определить трехмерную матрицу, содержащую все нули, вы пишете
A = zeros(8,4,20);
Все единицы используют единицы
, все NaN используют NaN
, все ложные используют false
вместо нулей
.
Если у вас есть существующая 2D-матрица, вы можете назначить элемент в «3-м измерении», и матрица будет расширена, чтобы содержать новый элемент. Все остальные новые элементы матрицы, которые необходимо добавить, обнуляются.
Например
B = magic(3); %# creates a 3x3 magic square
B(2,1,2) = 1; %# and you have a 3x3x2 array
Я использую Octave, но в Matlab такой же синтаксис.
Создаем 3d матрицу:
octave:3> m = ones(2,3,2)
m =
ans(:,:,1) =
1 1 1
1 1 1
ans(:,:,2) =
1 1 1
1 1 1
Теперь, допустим, у меня есть 2D матрица, которую я хочу расширить в новом измерении:
octave:4> Two_D = ones(2,3)
Two_D =
1 1 1
1 1 1
Я могу расширить ее, создав 3D матрицу, установив первую 2D в ней в мое старое измерение (здесь у меня второй размер третьего измерения):
octave:11> Three_D = zeros(2,3,2)
Three_D =
ans(:,:,1) =
0 0 0
0 0 0
ans(:,:,2) =
0 0 0
0 0 0
octave:12> Three_D(:,:,1) = Two_D
Three_D =
ans(:,:,1) =
1 1 1
1 1 1
ans(:,:,2) =
0 0 0
0 0 0