Моя проблема связана с конкатенацией. У меня есть трехмерная матрица, определенная как Z (строки) x X (столбцы) x Y. Я могу перенести на метку размерности Z. Я могу Horzcat может на размер X размер. Но не ось Y, потому что horzcat добавляет только к 2-му измерению (согласно файлу справки).turing 3d-матрица, поэтому 3-е измерение становится вторым измерением
Чтобы подчеркнуть, я не пытаюсь расширить исходную матрицу.
- оригинального 3D матрица (MGeol) имеет значение для геологической области клетки сидеть.
- Я работаю, где регионы изменить вычитание немного меньшие версий матрицы MGeol, смещенные на один, в Z, X и Y. В результате нештатные значения находятся в контакте между регионами.
- Чтобы получить все эти результаты обратно в матрицу того же размера, что и оригинал, чтобы я мог выровнять их с векторами координат.
Поэтому я добавляю слой нулей на размер смещения и конкатенацию. Его работа для строк (Z) и столбцов (X), но как я могу манипулировать Z до horzcat и сохранять порядок?
Zcontact = MGeol(1:nz-1,:,:) - MGeol(2:nz,:,:);
Zcontacts = vertcat(Zcontact, zeros(1,nx,ny)) - vertcat(zeros(1,nx,ny), Zcontact);
Xcontact = MGeol(:,1:nx-1,:) - MGeol(:,2:nx,:);
Xcontacts = horzcat(Xcontact, zeros(nz,1,ny)) - horzcat(zeros(nz,1,ny), Xcontact);
Ycontact = MGeol(:,:,1:ny-1) - MGeol(:,:,2:ny);
Ycontacts = horzcat(Ycontact, zeros(nz,nx,1)) - horzcat(zeros(nz,nx,1), Ycontact); %<- causes the error
Error using horzcat
CAT arguments dimensions are not consistent.
Вы пробовали 'cat', а не' horzcat'? Это более общая функция вида 'cat (DIM, A, B)'. Итак, попробуйте 'cat (3, Ycontact, нули (nz, nx, 1),)'? См. Мой более тщательный ответ. –
Вы можете посмотреть функции 'permute' (и' ipermute') и 'shiftdim'. – horchler