【发布时间】:2017-01-10 22:49:44
【问题描述】:
假设你有以下数据:
A = [1,2,3;4,5,6];
headers = {'force', 'mass', 'acceleration'};
units = {'N','Kg','m/s^2'};
假设我想将其转换为表格,其中headers 将是'VariableNames':
table_of_data = cell2table([units; num2cell(A)]);
table_of_data.Properties.VariableNames = headers
table_of_data =
force mass acceleration
_____ ____ ____________
N 'Kg' 'm/s^2'
[2] [3]
[5] [6]
请注意,A 的前两列已被删除。这是因为 MATLAB 对单个字符 N 的处理不同于 'Kg' 和 'm/s^2'。如果我在'N ' 之后插入一个空格,我会得到:
table_of_data =
force mass acceleration
_____ ____ ____________
'N ' 'Kg' 'm/s^2'
[1] [2] [3]
[4] [5] [6]
我怎样才能得到一个合适的表格,显示所有元素而不插入空格'N '?
如果我在单元格数组中添加更多行,例如[headers; units; num2cell(A)],则在units 中使用单个字符是没有问题的,因此以下工作:
table_of_data = cell2table([headers; units; num2cell(A)]);
table_of_data(1,:) = [];
table_of_data.Properties.VariableNames = headers
table_of_data =
force mass acceleration
_____ ____ ____________
'N ' 'Kg' 'm/s^2'
[1] [2] [3]
[4] [5] [6]
如何在不使用繁琐的解决方法的情况下解决这个问题?
【问题讨论】:
-
为什么不将您的单位存储在
table.Properties.VariableUnits? -
发生的事情是它隐式地将整个第一列转换为
char和1和4看起来像空字符串,对于单个字符,MATLAB 删除了周围的''字符串。 -
我已经意识到了。如果您尝试将其写入 dat 文件,则可以很容易地看到它(例如,可以在记事本中看到)。不过最好避免它:)
-
看起来很难看,但获得所需内容的最简单方法可能是将单位替换为
units = { {'N'}, {'Kg'}, {'m/s^2'}}; -
@Suever。我正在将其写入 .dat 文件。执行
writetable时不包括VariableUnits。