从结构对齐创建表

1次查看(最近30天)
亚历桑德罗·D
亚历桑德罗·D 2021年6月1日
回答: 斯蒂芬。 2021年6月2日
我有一个带有标量字段的结构,比如mom,我想在屏幕上以对齐的列显示结构的值,可能带有一些标题。下面是一个最小的工作示例:
妈妈。一个= 1;
妈妈。b= 2;
妈妈。veryLongName = 3;
头= {“时刻”“价值”};
帧=字段名(妈妈);
pvec = 0(元素个数(帧),1);
i = 1:元素个数(帧)
pvec (i) =妈妈。(帧{我});
结束
流('%s \t \t %s \n'头{1},标题{2});
i = 1:元素个数(帧)
流('%s \t \t %8.3f \n'帧,{},pvec (i));
结束
这段代码可以正常工作,但问题是列没有对齐,特别是字段有很长的名称时。这是输出:
时刻价值
一个1.000
b2.000
veryLongName3.000
如有任何建议,我们将不胜感激!

答案(2)

每•艾萨克森
每•艾萨克森 2021年6月2日
编辑:每•艾萨克森 2021年6月2日
我修改了格式说明符。
%%
妈妈。一个= 1;
妈妈。b= 2;
妈妈。veryLongName = 3;
头= {“时刻”“价值”};
帧=字段名(妈妈);
pvec = 0(元素个数(帧),1);
i = 1:元素个数(帧)
pvec (i) =妈妈。(帧{我});
结束
%%
Name_len = max([strlength(header(1)));Cellfun (@strlength, fnames)) + 2;
%%
流(% - * s % 8年代\ n”, name_len, header{1}, header{2});
力矩值
i = 1:元素个数(帧)
流(% - *年代% 8.3 f \ n ', name_len, fnames{i}, pvec(i));
结束
a 1.000 b 2.000 veryLongName 3.000
这一页的三分之二 fprintf,将数据写入文本文件 您可以找到格式说明符的这种用法的描述。搜索分段" 字段宽度”

斯蒂芬。
斯蒂芬。 2021年6月2日
简单:
妈妈。一个= 1;
妈妈。b= 2;
妈妈。veryLongName = 3;
hdr = {“时刻”“价值”};
tmp =[(妈妈),字段名struct2cell (mom)]。”;
流(“-20年代% % s \ n”hdr {:});
力矩值
流(“-20年代% % -8.3 f \ n”、tmp {:});
a 1.000 b 2.000 veryLongName 3.000

标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!