Working With Matlab Tables

30 次查看(过去 30 天)
Joe Dainton
Joe Dainton 2019-11-17
编辑: per isakson 2019-11-17
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

回答(4 个)

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

请先登录,再进行评论。


Steven Lord
Steven Lord 2019-11-17
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 2019-11-17
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 2019-11-17
编辑:per isakson 2019-11-17
"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?

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by