如何修复MATLAB在第一次迭代后显示的额外空间

问题描述 投票:0回答:1

我有一个fprintf语句循环3次,以显示一些数据。在第一次迭代之后,即使我没有添加额外的\ t,MATLAB也会显示一个神秘的空间。它就好像我有一个if语句在第一次迭代后显示不同的fprintf语句,但我在代码上没有这样的东西。请参阅链接上的图片以查看其显示的结果

% Display results

fprintf('Panel\tPressure  Cl\tCd\t| Panel\tPressure  Cl\tCd\n')
for q = 1:length(AOA)
       fprintf('--------------\t-------\t------- |--------------\t-- 
        -----\t-------\n')             
       fprintf('AOA %.0f°\t\t%.4f\t%.4f\t|AOA %.0f°
       \t\t%.4f\t%.4f\n'...
       ,AOA(q),Cl(q),CD(q),AOA(q),ClFinal(q),CDFinal(q))
       fprintf('--------------\t-------\t------- |--------------\t-- 
       -----\t-------\n')   
    for j = 1:length(pressure{1})
       fprintf('%.0f\t%.4f\t    |\t  |\t|%.0f\t%.4f\n',j+1,pressure{q} 
       (j),j+1,pFinal{q}(j))       
    end
end
matlab text printf
1个回答
0
投票

当你fprintf一个\t字符时,有一个自动空间填充最多4个空格。如果字符串少于4个字符,则字符串将被放置在开头并被“空格填充”,直到填充了4个字符(实际上,空格填充的字符只类似于一个字符)。如果字符串超过4个字符,那么它将在8,12,16等空格键盘...

以下是您的问题:

fprintf('Panel\tPressure Cl\tCd\t| Panel\tPressure Cl\tCd\n')

第一个字符串Panel有5个字符,因此将在第一个Panel末尾用3个空格填充空格。但是,第二个字符串| Panel有7个字符,因此在第二个字符串的末尾只需要相当于1个空格。

要消除间距问题,并在文本标题之间保持更均匀的间距,可以在所需的每个标题后面放置一个制表符,并相应地更改其他fprintf语句的格式:

fprintf('Panel\tPressure\tCl\t\tCd\t\t|\tPanel\tPressure\tCl\t\tCd\n')

您还可以查看此link以获取空间填充如何工作的另一个示例。

另外,here是关于格式化文本的MATLAB文档。

© www.soinside.com 2019 - 2024. All rights reserved.