# Conversion of Categorical to char while maintaining same dimension

16 views (last 30 days)
NAVNEET NAYAN on 9 Mar 2024
Commented: Voss on 10 Mar 2024
I have a variable having dimension m-by-3. It's datatype is categorical. I am trying to convert it to char datatype while maintaining the same dimension of m-by-3.
Can someone tell me how to convert a variable of categorical datatype of dimension m-by-3 to the char datatype of dimension m-by-3?

Voss on 9 Mar 2024
You cannot do that in general.
In the special case that all the categories are a single character long, then you can do it:
m = 4;
% creating a random m-by-3 categorical array
C = categorical(num2cell(char(64+randi(26,[m 3]))))
C = 4×3 categorical array
T Z H G X W P N R X Y Y
% converting C to an m-by-3 char
reshape(char(C),m,[])
ans = 4×3 char array
'TZH' 'GXW' 'PNR' 'XYY'
But if any of the categories is more than one character, that's not going to work because you have more than 3*m characters in total.
Instead, convert to a string array:
string(C) % m-by-3 string array
ans = 4×3 string array
"T" "Z" "H" "G" "X" "W" "P" "N" "R" "X" "Y" "Y"
Or a cell array of character vectors:
cellstr(C) % m-by-3 cell array
ans = 4×3 cell array
{'T'} {'Z'} {'H'} {'G'} {'X'} {'W'} {'P'} {'N'} {'R'} {'X'} {'Y'} {'Y'}
NAVNEET NAYAN on 10 Mar 2024
Very well explained. Thank You So Much.
Voss on 10 Mar 2024
You're welcome!