Matlab Sort Command Output

3 次查看(过去 30 天)
I have an equation and the user enters certain numbers into this equation, then it gets x1 x2 x3 numbers but wants them in result with sort, I use the "sort" command for this, but "sort" writes the value of x1. I want the result to be in x1 x2 x3. For example, equation gives me
x1=3 x2=1 x3=2 a=[x1 x2 x3] sort (a) = 1 2 3
I want it to be x2 x3 x1. How can I do that?

回答(2 个)

Tommy
Tommy 2020-5-14
How about this?
x1=3;
x2=1;
x3=2;
a=[x1 x2 x3];
varNames = {'x1','x2','x3'};
[~, idx] = sort(a);
fprintf('Output:\n%s\n', strip(sprintf('%s ', varNames{idx})))
Prints:
Output:
x2 x3 x1
Or if you don't want to have to type the variable names, I guess you could do this?
fprintf(mySort(x1, x2, x3));
function s = mySort(varargin)
[~, idx] = sort(cell2mat(varargin));
s = cell(numel(idx),1);
for i = 1:numel(idx)
s{i} = inputname(idx(i));
end
s = sprintf('Output:\n%s\n', strip(sprintf('%s ', s{:})));
end
Which prints the same thing.
  1 个评论
Veysel Ahmet Özdemir
It worked very well, thank you so much. Can you explain the logic, it was just copy and paste for me, I want to understand the logic of the commands. In addition, I will do this more than once for various numbers, there is a code that I can show these outputs as a table, I did some research but I couldn't find it :(

请先登录,再进行评论。


Stephen23
Stephen23 2020-5-14
编辑:Stephen23 2020-5-14
Using separate variables makes this rather complex.
It would be much simpler if you stored the data in arrays, e.g. in one table:
>> names = {'x1';'x2';'x3'};
>> values = [3;1;2];
>> T = table(names,values)
T =
names values
_____ ______
'x1' 3
'x2' 1
'x3' 2
>> T = sortrows(T,'values') % this is all you need
T =
names values
_____ ______
'x2' 1
'x3' 2
'x1' 3
Better data design -> simpler, neater, more efficient code.
  1 个评论
Veysel Ahmet Özdemir
Thank you so much but i need 2 tables. The first table should only include "x"s. For exp.:
1: x1 x2 x3
2: x2 x3 x1
....
The second table should only include values. For exp.:
1: 1 2 3
2: 2 3 5

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by