我有两组数字,想要在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
,这并不重要,只需要在正确的方向上提供一些帮助。
答案 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不必排序。如果您需要总次数,只需再次将结果应用于结果。