MATLAB使用: 01 输出在显示窗口的数据不能对齐

在使用matlab时,想要在命令行窗口输出一些数据方便观看。所以使用了matlab自带的输出命令fprintf。fprintf命令提供了数据对齐功能,在这里参考AI给出的使用方法。在输出数据时加入’%10s'即可输出占据10个位置的字符。

下图是参照AI的测试结果。发现对齐效果良好,可以把不同长度的数据进行左对齐,界面美观。

但在下面实际应用中却遇到了问题。可以看到如下实例。程序如下

fprintf('%-15s  %-15d % -15s\n', '01ABC第一列数据', 123456,'02DE第二列数据');
fprintf('%-15s  %-15d % -15s\n', '01ABdef第一列', 1234,'02DE第二列');
fprintf('\n');
fprintf('%-15s  %-15d % -15s\n', '01ABC第一列数据', length('01ABC第一列数据'),'02DE第二列数据');
fprintf('%-15s  %-15d % -15s\n', '01ABdef第一列', length('01ABdef第一列'),'02DE第二列');

测试结果如下

>> test
01ABC第一列数据       123456          02DE第二列数据      
01ABdef第一列       1234            02DE第二列        

01ABC第一列数据       10              02DE第二列数据      
01ABdef第一列       10              02DE第二列        
>> 

发现两组数据没有对齐。第二组测试了第一列数据的宽度,发现宽度都是10,但看起来第一行数据要宽很多,在这里一直怀疑fprintf的使用方法有错误。

通过仔细观察发现,根本原因并不在于函数的使用方法,根本原因在于汉字和字母或数字的混用。一个汉字的视觉效果几乎相当于两个字母或数字,因此带来了没有对齐的视觉效果。

解决办法:将汉字换成英文,实际测试效果非常好。效果如下:

也可以将汉字放在窗口的后面,可以看到,第三列有汉字,但是视觉效果也是对齐的。

另外要注意,设置的字符宽度一定要大于实际字符宽度(英文字母很占字符数量),否则也不会对齐的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值