cannot fill table with chars?

30 visualizaciones (últimos 30 días)
Budding MATLAB Jockey
Budding MATLAB Jockey el 24 de Mayo de 2020
Comentada: Giuseppe Degan Di Dieco el 12 de Mayo de 2021
Hi I am having a pile of issues with the table features in matlab.
I can't figure out how to put a char array into a char variable of a table. I've been reading the table help files but Il'm missing something :(
x=[1;2;3];
y=[4;5;6];
T=table(x,y)
T =
3×2 table
x y
_ _
1 4
2 5
3 6
>> T.words = repmat({''}, 3, 1);
>> T(1,'words') = 'poop';
The number of table variables in an assignment must match.
>> T(1,3) = 'poop';
The number of table variables in an assignment must match.
>> T{1,3} = 'poop';
The value on the right-hand side of the assignment has the wrong width. The assignment requires a value whose width is 1.
  2 comentarios
Stephen23
Stephen23 el 24 de Mayo de 2020
Editada: Stephen23 el 24 de Mayo de 2020
"...but Il'm missing something "
It isn't a character array. You defined it as a cell array of empty character vectors:
T.words = repmat({''}, 3, 1);
It is certainly possible to define words to be a character array:
>> T.words = char(nan(3,0))
T =
x y words
_ _ _____
1 4
2 5
3 6
>> T.words(1,1:4) = 'boat'
T =
x y words
_ _ _____
1 4 boat
2 5
3 6
>> size(T.words)
ans =
3 4
but that is likely to be useful only in some specific circumstances. I would imagine that most users would prefer a string array.
Giuseppe Degan Di Dieco
Giuseppe Degan Di Dieco el 12 de Mayo de 2021
Dear Stephen,
thanks for your tip, indeed the solution of using a string array is very good.
Best.

Iniciar sesión para comentar.

Respuesta aceptada

Tommy
Tommy el 24 de Mayo de 2020
x=[1;2;3];
y=[4;5;6];
T=table(x,y);
T.words = repmat({''}, 3, 1); % this creates a 3x1 cell array
After these lines, T.words is a cell array:
>> T.words
ans =
3×1 cell array
{0×0 char}
{0×0 char}
{0×0 char}
You can fill it like so:
T(1,'words') = {'a'};
T(2,3) = {'bcd'};
T{3,3} = {'e':'z'};
% alternatively,
T{3,3}{1} = 'e':'z';
Which results in this:
>> T
T =
3×3 table
x y words
_ _ ________________________
1 4 'a'
2 5 'bcd'
3 6 'efghijklmnopqrstuvwxyz'
  1 comentario
Giuseppe Degan Di Dieco
Giuseppe Degan Di Dieco el 12 de Mayo de 2021
Dear Tommy,
thanks for your suggestion, it really made me understanding the repmat function.
It helped me in changing the content of a data table, it was a cell array but I defined the substitute as a string.
Best.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by