Concatenate arrays in MATLAB and Change Column name of Table

11 views (last 30 days)
I am trying to concatenate a cell array and a double but can't achieve that. Cell array can be generated using below code.
test = {'A.X' 'B.Y' 'C.Z'} ;
Double array can be generated using below code.
test_double = [10 20 30; 40 50 60];
I tried concatenating them using following code
cat(1, test, test_double)
But I get dimension error as follows
Dimensions of matrices being concatenated are not consistent.
Also if I convert the double array to table and rename the columns using input form cell array it gives me an error
'A.X' is not a valid variable name.
Above error can be replicated using following code
test_table = table(test_double);
test_table.Properties.VariableNames = test;
How can I concat the arrays?
How can I convert double array to table and rename columns using cell array?

Answers (1)

KSSV
KSSV on 15 Jan 2021
t = [10 20 30; 40 50 60];
A = t(:,1) ; B = t(:,2) ; C = t(:,3) ;
T = table(A,B,C)
  4 Comments
Furqan Hashim
Furqan Hashim on 15 Jan 2021
If variables can't be named as suggested can below 2 arrays be concatenated?
test = {'A.X' 'B.Y' 'C.Z'} ;
test_double = [10 20 30; 40 50 60];
Steven Lord
Steven Lord on 15 Jan 2021
test = {'A.X' 'B.Y' 'C.Z'} ;
test_double = [10 20 30; 40 50 60];
T = array2table(test_double, 'VariableNames', test)
T = 2x3 table
A.X B.Y C.Z ___ ___ ___ 10 20 30 40 50 60
It does require slightly different syntax to access the variables by name using dot notation if the names aren't MATLAB identifiers.
% T.A.X would not work
x = T.('A.X')
x = 2×1
10 40
Indexing using parentheses or curly braces works, though.
z2 = T{2, 'C.Z'}
z2 = 60

Sign in to comment.

Categories

Find more on Structures in Help Center and File Exchange

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!