在MATLAB中将两个数字向量相对于彼此排序

时间:2014-06-24 11:02:57

标签: matlab sorting vector sum ranking-functions

我有两组数字,想要在MATLAB中比较和排名相对于彼此

数据是:

x = [3 7 8 25 33 52 64 65 78 79 91 93];
y = [7 10 12 27 30 33 57 62 80 83 85 90];

我从for/if/else命令开始,卡在中间。 换句话说,我希望通过MATLAB得到答案第一组(x)中的数字大于第二组(y中的数字的次数。

我开始排序等。

n1 = length(data1);
n2 = length(data2);

xs = sort(x);
ys = sort(y);

r1 = zeros(1,n1);
r2 = zeros(1,n2);

我愿意使用除此类排序之外的其他命令for/if/else,这并不重要,只需要在正确的方向上提供一些帮助。

2 个答案:

答案 0 :(得分:0)

我不完全确定我理解你在那里做的事情。假设两个向量的大小相同是否安全?

你可以简单地对2个排序的向量进行元素明智的划分,并从那里获得统计数据。 例如:     div = xs./ys;     max_div = max(div)     mean_div = mean(div)

这相当于运行for循环并将xs数组中的每个元素除以ys数组中相应索引的每个元素。最大的'并且意味着'显然是最大的商和平均商。

答案 1 :(得分:0)

在MATLAB中,找出向量x中的每个数字大于向量y中的数字的次数:

sum(x > y.')

这使用y的转置通过大小(y)矩阵创建大小(x),当x中的数字大于y中的数字时,使用1,然后对每列求和。

对于您的数据,结果是以下向量,x中的每个数字都有一个项目:

  

[0 0 1 3 5 6 8 8 8 8 12 12]

向量x和y不必排序。如果您需要总次数,只需再次将结果应用于结果。