My fprintf table is not aligned
P=[65.44; 87.12; 67.46; 79.51];
words1={'Moisture';'Fixed carbon';'Volatile matter';'Ash'};words2 = repmat({'wt%'},length(P),1);
D={words1,P,words2};
for k1 = 1:size(words1,1);
fprintf('%s \t %.2f \t %s \n',char(D{1}(k1)),D{2}(k1,:),char(D{3}(k1)))
end
excecutes as follows:
Moisture 65.44 wt%
Fixed carbon 87.12 wt%
Volatile matter 67.46 wt%
Ash 79.51 wt%
Could someone please help in figuring out how to align the strings and digits.

 Réponse acceptée

yanqi liu
yanqi liu le 24 Jan 2022
P=[65.44; 87.12; 67.46; 79.51];
words1={'Moisture';'Fixed carbon';'Volatile matter';'Ash'};
words2 = repmat({'wt%'},length(P),1);
D={words1,P,words2};
for k1 = 1:size(words1,1);
fprintf('%20s \t %.2f \t %s \n',char(D{1}(k1)),D{2}(k1,:),char(D{3}(k1)))
end
Moisture 65.44 wt% Fixed carbon 87.12 wt% Volatile matter 67.46 wt% Ash 79.51 wt%

2 commentaires

Kareemulla Dudekula
Kareemulla Dudekula le 24 Jan 2022
Modifié(e) : Kareemulla Dudekula le 24 Jan 2022
Thanks very much! I think 20s is figured out through a series of trials?; I am wondering if there is a more elegant way to do it. Also, what if I had my P matrix as follows: P=[5.44; 87.12; 67.46; 9.51]; decimal places do not align...
It does, you just have to specify the total width you want:
P=[5.44; 87.12; 67.46; 9.51];
fprintf('data: %5.2f\n',P)
data: 5.44 data: 87.12 data: 67.46 data: 9.51

Connectez-vous pour commenter.

Plus de réponses (1)

KSSV
KSSV le 24 Jan 2022
P=[65.44; 87.12; 67.46; 79.51];
words1={'Moisture';'Fixed carbon';'Volatile matter';'Ash'};
words2 = repmat({'wt%'},length(P),1);
T = table(words1,P,words2)
T = 4×3 table
words1 P words2 ___________________ _____ _______ {'Moisture' } 65.44 {'wt%'} {'Fixed carbon' } 87.12 {'wt%'} {'Volatile matter'} 67.46 {'wt%'} {'Ash' } 79.51 {'wt%'}

Catégories

En savoir plus sur Graphics Object Properties dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by