fprintf cell array of two classes
Afficher commentaires plus anciens
Hi all,
I need to use fprintf to print out a char array (strictly 3 columns) and a double array side-by-side so they align. For instance:
charArr = ['USA' ; 'CAN' ; 'FRA']
doubArr = [1 2 3 4; 3 4 5 6; 6 7 8 9]
I want it to look something like:
USA 1 2 3 4
CAN 3 4 5 6
FRA 6 7 8 9
I tried to use cell arrays like below:
table = {charArr, doubArr};
fprintf( '%c, %d', table{:})
But I always get something funky and never what I want. Any help would be appreciated.
Réponse acceptée
Plus de réponses (2)
No need for complex strings, ugly loops, or slow arrayfun, you just need one simple fprintf call::
>> A = ['USA' ; 'CAN' ; 'FRA'];
>> B = [1 2 3 4; 3 4 5 6; 6 7 8 9];
>> C = [cellstr(A),num2cell(B)].'; % transpose to get correct order
>> fprintf('%s %d %d %d %d\n', C{:})
USA 1 2 3 4
CAN 3 4 5 6
FRA 6 7 8 9
If you want to learn how to use MATLAB efficiently, you might as well start now.
3 commentaires
Lawrence Wang
le 17 Mar 2020
"Is there any way to rectify this? "
Of course! Just select a suitable fieldwidth, e.g.:
>> A = ['USA' ; 'CAN' ; 'FRA'];
>> B = [1,0,12,3;9,12,11,21;2,5,9,2];
>> C = [cellstr(A),num2cell(B)].';
>> fprintf('%5s %3d %3d %3d %3d\n', C{:})
USA 1 0 12 3
CAN 9 12 11 21
FRA 2 5 9 2
The fprintf documentation explains the fprintf options.
Lawrence Wang
le 17 Mar 2020
require = string(cell2mat(strcat(charArr,{' '}, num2str(doubArr))));
Catégories
En savoir plus sur Logical 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!