Как создать матрицу матриц? Я хочу создать матрицу n * m, для которой каждый элемент представляет собой массив из трех элементов. Как мне это сделать?Matlab: Как создать пустую матрицу n * m массивов?
Спасибо.
Как создать матрицу матриц? Я хочу создать матрицу n * m, для которой каждый элемент представляет собой массив из трех элементов. Как мне это сделать?Matlab: Как создать пустую матрицу n * m массивов?
Спасибо.
Лучший способ: Google больше о Matlab's cell array
Другой способ : вы можете создать матрицу 3D (n-by-m-by-3), то есть: m = zeros(n,m,3)
это то, что вы имеете в виду? использовать встроенный в функциональных нулей
Пример
а = нули (N, М, Р)
Р = 3
Вы можете использовать mat2cell
, но я бы рекомендовал использовать 3D-матрицу, как и другие ответы говорит
m = 5;
n = 4;
A = randi(50,n,m*3);
out = mat2cell(A,ones(n,1),repmat(3,m,1));
Выход:
>> out
out =
[1x3 double] [1x3 double] [1x3 double] [1x3 double]
[1x3 double] [1x3 double] [1x3 double] [1x3 double]
[1x3 double] [1x3 double] [1x3 double] [1x3 double]
[1x3 double] [1x3 double] [1x3 double] [1x3 double]
[1x3 double] [1x3 double] [1x3 double] [1x3 double]
Вы можете получить доступ к каждому элементу с {}
так:
>> out{1,1}
ans =
6 41 13
Для создания пустых ячеек,
>> out = cell(m,n)
out =
[] [] [] []
[] [] [] []
[] [] [] []
[] [] [] []
[] [] [] []
спасибо. Но если я использую 'm = zeros (n, m, 3),' 'm (1,1)' даст мне 0 вместо (0 0 0), чего я действительно хотел. Благодарю. – Hong
, тогда вы должны использовать массив ячеек. С трюком 3D у вас есть доступ к m (i, j, 1) ... m (i, j, 3) – scmg
, чтобы отобразить весь (0,0,0), тогда вы должны иметь 3-й индекс, используя Matlab's векторизация: 'm (i, j,:)' – scmg