- Loop over each value of ‘a’
- For each iteration, convert the ‘b x c’ cell slice into a matrix using cell2mat.
- Reshape the matrix into the desired ‘d’ size.
- Convert it back into a ‘c x b’ cell array using mat2cell.
- Append the result to the rows of the new cell array.
Change dimension of matrices in a cell variable
2 views (last 30 days)
Show older comments
Dear MATLAB community, I have made a cell whose dimension is a*b*c, which contains matrices of dimension d*1.
I want to change the dimension of matrices in such cell so that I get a cell variable whose dimension is a*d, which contains matrices of dimension c*b
Can I do such process using mat2cell, cell2mat, or any other function without using for loop or with only few for loops?
CHANGE (d*1) matrices in (a*b*c) cell
INTO (c*b) matrices in (a*d) cell
0 Comments
Answers (1)
Vedant Shah
on 9 Apr 2025
To convert an existing ‘a x b x c’ cell array containing ‘dx1’ matrices into an ’a x d’ cell array, you can follow these steps:
Below is a code snippet for your reference:
newCell = cell(a, d);
for i = 1:a
matrices = cell2mat(reshape(originalCell(:, :), a, []));
reshapedMatrices = reshape(matrices, d, []);
splitMatrices = mat2cell(reshapedMatrices, ones(1, d), c*b);
newCell(i, :) = cellfun(@(x) reshape(x, c, b), splitMatrices, 'UniformOutput', false);
end
For more information, you can refer to the documentation using the following commands in the MATLAB command window:
web(fullfile(docroot, "/matlab/ref/mat2cell.html"))
web(fullfile(docroot, "/matlab/ref/cell2mat.html"))
web(fullfile(docroot, "/matlab/ref/reshape.html"))
0 Comments
See Also
Categories
Find more on Data Type Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!