MATLAB Answers

When creating a table, how do I specify the dimensions of a particular variable?

1 view (last 30 days)
Rafael Cordero
Rafael Cordero on 11 Jul 2021
Answered: Steven Lord on 11 Jul 2021
Hello all,
Lets say Im defining an empty table as so:
my_table = table('Size', [0,7], 'VariableNames', ...
{'name', 'window', 'fs', ...
'x', 'y', 'z', 'mag'}, ...
'VariableTypes', ...
{'string', 'double', 'double', ...
'double', 'double', 'double', 'double'});
The variable that I want to put in in 'window' is actually a 1x2 double. But when I set it:
my_table.window(1) = [1 4];
I get the error:
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-2.
So: how do I specify that my 'window' is actually 1x2?
Many thanks

Accepted Answer

Steven Lord
Steven Lord on 11 Jul 2021
my_table = table('Size', [0,7], 'VariableNames', ...
{'name', 'window', 'fs', ...
'x', 'y', 'z', 'mag'}, ...
'VariableTypes', ...
{'string', 'double', 'double', ...
'double', 'double', 'double', 'double'});
my_table.window(1, 1:2) = [1 4]
Warning: The assignment added rows to the table, but did not assign values to all of the table's existing variables. Those variables are extended with rows containing default values.
my_table = 1×7 table
name window fs x y z mag _________ ______ __ _ _ _ ___ <missing> 1 4 0 0 0 0 0

More Answers (2)


Sulaymon Eshkabilov
Sulaymon Eshkabilov on 11 Jul 2021
It is better to create a zero matrix and then assign a table variable, e.g.:
Nrows=10; Ncols=8;
A = zeros(10, 8);
my_table = array2table(A, 'VariableNames', {'name', 'win1', 'win2', 'fs','x', 'y', 'z', 'mag'});
%% Assign the values
my_table.win1(1)=1;
my_table.win2(1)=4;
%% Make a new column (var named "window")
my_table.window=[my_table.win1, my_table.win2];
my_table.win1=[];
my_table.win2=[];

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!