fprintf with repeating labels and numbers
Show older comments
I don´t know how to work properly with fprintf and have a problem creating a table with specific labels for my rows. I have the following example code so far:
% Elements
elem_id = 0 ;
res_id = 1 ;
group_id = 0 ;
% Coordinates
x = [1 1 9 ;
1 1 6 ;
1 1 0 ;
2 2 9 ;
2 2 6 ;
2 2 0 ;
];
g = 1 ;
for n = 1:length(x)
fprintf( '%5i %4s %4i %8.3f%8.3f%8.3f\n', elem_id + n, 'A', group_id + g, x(n,1), x(n,2), x(n,3))
if mod(n,3) == 0
g = g + 1 ;
end
end
which produces the following output:
1 A 1 1.000 1.000 9.000
2 A 1 1.000 1.000 6.000
3 A 1 1.000 1.000 0.000
4 A 2 2.000 2.000 9.000
5 A 2 2.000 2.000 6.000
6 A 2 2.000 2.000 0.000
Everything is fine except for the second column, which I want it to be like this:
1 A 1 1.000 1.000 9.000
2 B 1 1.000 1.000 6.000
3 B 1 1.000 1.000 0.000
4 A 2 2.000 2.000 9.000
5 B 2 2.000 2.000 6.000
6 B 2 2.000 2.000 0.000
I fixed it as 'A' for all rows just to keep the code working because everything I have tried is not working so far. Basically I tried something like this:
second_column= {'A' 'B' 'B'}' ;
second_column = repmat(second_column, length(x)/3, 1) ;
and then just call second_column(n) in my fprintf line. However, I get an error saying fprintf is not defined for cell elements, but everywhere I try to look for a similar solution people always use cells with fprintf which got me even more confused!
As you can see my data is grouped in 3s, and what I want is the first element to have a certain label and the second and third element to have a different label. I hope my question is clear and will appreciate any help!
Accepted Answer
More Answers (0)
Categories
Find more on String in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!