如果您有一张表格,例如
T =
Cell_Vec Scalar
____________ _____
[1x3 double] 22497
并使用writetable(T,'filename.txt','Delimiter','tab')
表被破坏,因为它再次读取时看起来不一样(添加了字段)。 Matlab建议将其保存为.mat
但在我的情况下这不是一个好的解决方案,因为文件格式必须更稳定并且可以在其他程序中工作(例如excel / calc)。
来自Matlab:
T =
Age Height Weight BloodPressure
___ ______ ______ _____________
Smith 38 71 176 124 93
Johnson 43 69 163 109 77
Williams 38 64 131 125 83
Jones 40 67 133 117 75
Brown 49 64 119 122 80
将表T写入逗号分隔的文本文件myPatientData.dat,并显示文件内容。
writetable(T,'myPatientData.dat','WriteRowNames',true)
type 'myPatientData.dat'
Row,Age,Height,Weight,BloodPressure_1,BloodPressure_2
Smith,38,71,176,124,93
Johnson,43,69,163,109,77
Williams,38,64,131,125,83
Jones,40,67,133,117,75
Brown,49,64,119,122,80
但我想要变量名称" BloodPressure"保持完整,以便:
Row,Age,Height,Weight,BloodPressure
Smith,38,71,176,124 93
Johnson,43,69,163,109 77
Williams,38,64,131,125 83
Jones,40,67,133,117 75
Brown,49,64,119,122 80
有什么建议吗?令人沮丧,因为writetable
函数似乎最方便,是否可以进行简单的重写?
如果我制作.txt
文件并手动在Cell_Vec
值之间添加空格,则变量readtable
之间的标签将至少正常工作...
答案 0 :(得分:0)
如果你想保留这样的两个值,最简单的方法就是将它们转换为一个格式化的字符串,然后你的其他程序可以解析它。
T = table([1;2;3], [124, 90; 130 40; 150 10], 'VariableNames', {'Age', 'BP'});
%// Convert blood pressure to "Systolic/Diastolic"
T.BP = cellfun(@(x)sprintf('%d/%d',x(1),x(2)), num2cell(T.BP, 2), 'uni', 0);
writetable(T,'myPatientData.dat','WriteRowNames',true)
type('myPatientData.dat')
%// Age,BP
%// 1,124/90
%// 2,130/40
%// 3,150/10