How to split a 3d matrix into sub-3d matrices?

回答 (2 件)

Bruno Luong
Bruno Luong 2020 年 8 月 3 日

0 投票

probably you can use
mat2cell
IMO splitting a matrix in cell is rarely a good idea if you want your code works decenly in speed.
Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro 2020 年 8 月 3 日

0 投票

There is not enough information to be certain about your question, but by addressing your matrices you can create submatrices like this:
BigMatrix = ones(16,16,16);
smallMatrix_1 = BigMatrix(1:8,1:8,1:8);
smallMatrix_2 = BigMatrix(1:8,1:8,9:16);
smallMatrix_3 = BigMatrix(1:8,9:16,1:8);
smallMatrix_4 = BigMatrix(9:16,1:8,1:8);
etc.

6 件のコメント

madhan ravi
madhan ravi 2020 年 8 月 3 日
編集済み: madhan ravi 2020 年 8 月 3 日
What if the numel(matrix) is 16e3 ?
Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro 2020 年 8 月 3 日
Ok that is big, but rather that numel try using size:
[rows,columns,levels]= size(BigMatrix);
Then you know the size of each dimension. You can then iterate over each by partitioning them, e.g.
subrows = linspace (1,rows,numSections);
subcolumns = linspace (1,columns,numSections);
sublevels = linspace (1,levels,numSections);
so that you then iterate over each section of the rows, columns and levels.
Hope this helps
madhan ravi
madhan ravi 2020 年 8 月 3 日
編集済み: madhan ravi 2020 年 8 月 3 日
Ok, thanks;)
Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro 2020 年 8 月 3 日
Glad to help! If this solves the question, could you please accept the answer?
madhan ravi
madhan ravi 2020 年 8 月 3 日
I’m not the original poster, sorry :(
Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro 2020 年 8 月 3 日
of course!

サインインしてコメントする。

カテゴリ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by