num2str or str2num?
11 次查看(过去 30 天)
显示 更早的评论
I am trying to make a table of numbers with corresponding names for example: names and grade table sorted by the number
Bob 97
Joe 87
Sally 88
How do i setup a variable to equal something like a= Bob 97 so when i go to do the fprintf it will sort by the numbers in the second column and leave the corresponding names to the number in the first column
final table should look like:
Name Grade
Joe 87
Sally 88
Bob 97
2 个评论
Image Analyst
2012-4-29
Because he wants it sorted by grade, and the grade doesn't necessarily show up in the same column, or even in a single column, if the names have different lengths:
>> int2str('Sally 88')
ans =
83 97 108 108 121 32 32 32 56 56
采纳的回答
Image Analyst
2012-4-29
Ryan, if you can read in from your input (say, with textscan) and stuff the name into a cell array and stuff the numbers into a double array, then you can sort the double array and sort the cell array the same way, like in this (untested) code:
% Create sample data:
names = {'Bob'; 'Joe'; 'Sally'}
grades = [97 87 88]
% Now sort by ascending grade number:
[sortedGrades sortOrder] = sort(grades, 'ascend');
% Sort the names the same way.
sortedNames = names(sortOrder);
% Now print out to the command window.
fprintf('Name Grade\n');
for k = 1 : length(sortedGrades)
fprintf('%s %d\n', sortedNames{k}, sortedGrades(k));
end
In the command window:
names =
'Bob'
'Joe'
'Sally'
grades =
97 87 88
Name Grade
Joe 87
Sally 88
Bob 97
3 个评论
Image Analyst
2012-4-29
Yeah, that's hard, unless you want to use a uitable. The tab (\t) is somewhat unreliable as to where it places the next column. What I do is to set the font to a fixed spacing font like Courier (I know, Courier is not "pretty" though) and then use fixed length fields, e.g. %20s or %7d to line things up.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!