Working With Matlab Tables

39 vues (au cours des 30 derniers jours)
Joe Dainton
Joe Dainton le 17 Nov 2019
Modifié(e) : per isakson le 17 Nov 2019
Hello all
Seems like a simple question but it driving me insane.
I have imported data from an excel sheet into a Table.
I just want to change the value of an element in the table, i remember from somewhere that i could use the matrix notation so i used the following command:-
Data(1,4) = 'Tony'
where Data is the table name, and i want row 1, column 4 to be changed to Tony
But i get the following error:-
>> Data(1,4)='Tony'
The number of table variables in an assignment must match.
Can i ask why this does not work?
Thank you

Réponses (4)

Image Analyst
Image Analyst le 17 Nov 2019
Since you want to change the CONTENTS of the table, use braces not parentheses.
Data{1,4}='Tony'
  1 commentaire
Joe Dainton
Joe Dainton le 17 Nov 2019
Thank you for your response, however this does not work, i still get an error:-
HHHHHHHHHHHHHHH.JPG

Connectez-vous pour commenter.


Steven Lord
Steven Lord le 17 Nov 2019
Use parentheses to extract a smaller table from a larger table or to assign a smaller table into a larger one.
Use curly braces to extract data from a table or store data into a table when the data is not itself a table.
Data{1, 4} = 'Tony'; is probably what you want, since 'Tony' is not itself a table.
See the sections "Tables Containing Specified Rows and Variables" and "Extract Data from Specified Rows and Variables" on this documentation page for examples of the differences between Data(...) and Data{...}.

Star Strider
Star Strider le 17 Nov 2019
I created my own table to test my code. (I didn’t post it previously because the other two Answers had already appeared.)
The substitution only works in my code with this syntax:
Data(1,4) = {'Tony'};
Example illustration:
Chars = cell2table({'Abcd';'Efgh';'Ijkl';'Mnop';'Qrst';'Uvwxyz'},'VariableNames',{'Chars'}); % Create Table
Data = [array2table(rand(6,3)) Chars]; % Create Table
Data(1,4) = {'Tony'}; % Substitute Element
See if that works with your table.

per isakson
per isakson le 17 Nov 2019
Modifié(e) : per isakson le 17 Nov 2019
"I remember from somewhere" With Matlab that doesn't work for me. I need to consult the documentation more often than not. This does the trick (on R2018b)
Data{1,4} = {'Tony'};
and this
Data.Customer(1) = {'Tony'};
"Why" The value of Data{1,4} is a cell.
>> class( Data{1,4} )
ans =
'cell'
Thus the new value need to be a cell. (My mental model.)
Star Strider shows that
Data(1,4) = {'Tony'};
works, which puzzles me. Is that documented behavior?

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by