Categorical cell array reshaping

22 views (last 30 days)
MB Sylvest
MB Sylvest on 18 Aug 2018
Commented: Image Analyst on 11 Jul 2019
Dear All
I have a cell array (2x7) of 1x1 categorical arrays that looks like below
1 0 0 0 0 1 0
1 1 1 1 0 1 0
I like to combine this into a 1x7 cell array of categories so it looks like below
1;1 0;1 0;1 0;1 0;0 1;1 0;0
Anyone have any ideas how to do this. Help is highly appreciated.
Cheers Mads
  3 Comments
Image Analyst
Image Analyst on 11 Jul 2019
Original question in case user edits it away:
Dear All
I have a cell array (2x7) of 1x1 categorical arrays that looks like below
1 0 0 0 0 1 0
1 1 1 1 0 1 0
I like to combine this into a 1x7 cell array of categories so it looks like below
1;1 0;1 0;1 0;1 0;0 1;1 0;0
Anyone have any ideas how to do this. Help is highly appreciated.
Cheers Mads

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 18 Aug 2018
this is a 2x7 cell array of 1x1 categorical arrays
example cell array:
yourcellarray = num2cell(categorical([1 0 0 0 0 1 0; 1 1 1 1 0 1 0]))
notice that I first construct a 2x7 categorical array to create the cell array. A categorical array is what you should use instead of a cell array of categorical, so let's convert it back to a simple array. Unfortunately, cell2mat only works with numerical types so we have to be a bit roundabout:
c = reshape([yourcellarray{:}], size(yourcellarray));
You should leave it at that. If you do really want a cell array of column vector (which would be slower and more complicated to use), you can convert c back to a cell array with
num2cell(c, 1)
I wouldn't recommend it.

More Answers (1)

Yuvaraj Venkataswamy
Yuvaraj Venkataswamy on 18 Aug 2018
if true
X=your_categoricalArray;
Y=double(X); % your answer
end

Community Treasure Hunt

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

Start Hunting!

Translated by