MATLAB表格(table)按列组织数据,每列有名字、类型可以不同,读起来像带表头的 Excel。矩阵装不下异质列,cell 又容易丢掉列名时,用 table 更合适。

创建 table

Name   = {'Riya'; 'Siya'; 'Tiya'};
Age    = [25; 30; 28];
Height = [160; 175; 168];
Weight = [55; 70; 65];

T = table(Name, Age, Height, Weight)

输出是一张带列名的表,列名就是传入的变量名。

访问列:点号

T.Age           % 一整列(列向量)
T.Age(1)        % 第一行的 Age
T(1, :)         % 第一行
T(1:2, 'Age')   % 取前两行的 Age 列

增删行列

T.BMI = T.Weight ./ (T.Height/100).^2;   % 新增一列
T(4, :) = {'Niya', 26, 170, 60};          % 追加一行
T(:, 'Weight') = [];                       % 删除 Weight 列

列用 T.列名 访问。新增行时用 cell 给一行赋多列。删列写成 T(:, '列名') = []

和 cell、普通数组互转

C = table2cell(T);      % 表格到 cell
T2 = cell2table(C, 'VariableNames', {'Name','Age','Height','Weight'});
A = table2array(T(:, 'Age'));  % 单列数值转普通数组

读取 CSV / Excel 直接变表格

T = readtable('data.csv')      % CSV 自动识别表头
T = readtable('data.xlsx')     % Excel 也能读

写回文件用 writetable

writetable(T, 'out.csv')

自查清单

  • 表格的列在 MATLAB 里怎么用点号访问?
  • 给表格追加一列,用什么写法?
  • table 和 cell 怎么互转?单列怎么转成普通数组?
  • 读 CSV 文件直接得到表格,用哪个函数?
  • 学号这类文本列,为什么更常放在 cell 而不是数值数组里?