2

我有两组数字,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,这并不重要,只需要在正确的方向上提供一些帮助。

4

2 回答 2

0

我不完全确定我理解你在那里想要做什么。假设这两个向量大小相同是否安全?

您可以简单地对 2 个已排序的向量进行元素除法,然后从那里获取统计信息。例如:div = xs./ys; max_div = max(div) mean_div = mean(div)

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

于 2014-06-26T14:43:37.070 回答
0

在 MATLAB 中,要找出向量 x 中的每个数字比向量 y 中的数字大多少次:

sum(x > y.')

当 x 中的数字大于 y 中的数字时,这使用 y 的转置来创建一个 size(x) x size(y) 矩阵,然后对每一列求和。

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

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

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

于 2015-08-29T20:15:28.977 回答