Arrays 在matlab/octave中组合两列数组的奇偶索引
我有一个包含两列的数组(b),我想将第二列偶数索引的数据与第一列奇数索引的数据结合起来。Arrays 在matlab/octave中组合两列数组的奇偶索引,arrays,matlab,octave,Arrays,Matlab,Octave,我有一个包含两列的数组(b),我想将第二列偶数索引的数据与第一列奇数索引的数据结合起来。 PS:这些数字不是线性的,所以我不能使用linspace命令,这只是一个例子。 a1=[1;2;3;4;5] a2=[1.5;2.5;3.5;4.5;5.5] b=[a1,a2] b array: 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 5.5000 Final output below I'm t
PS:这些数字不是线性的,所以我不能使用linspace命令,这只是一个例子。
a1=[1;2;3;4;5]
a2=[1.5;2.5;3.5;4.5;5.5]
b=[a1,a2]
b array:
1.0000 1.5000
2.0000 2.5000
3.0000 3.5000
4.0000 4.5000
5.0000 5.5000
Final output below I'm trying to get:
1
2.5
3
4.5
5
可以组合两个向量(奇数和偶数),然后对它们进行排序:
c = sort([a1(1:2:end); a2(2:2:end)])
可以组合两个向量(奇数和偶数),然后对它们进行排序:
c = sort([a1(1:2:end); a2(2:2:end)])
那么:
[nb_rows,nb_cols] = size(b);
c = zeros(nb_rows,1);
c(1:2:end) = b(1:2:end,1);
c(2:2:end) = b(2:2:end,2);
那么:
[nb_rows,nb_cols] = size(b);
c = zeros(nb_rows,1);
c(1:2:end) = b(1:2:end,1);
c(2:2:end) = b(2:2:end,2);
这将处理
a1
(和a2
)中的元素数为奇数或偶数的情况:
c = b.'; %'//
n = numel(a1);
ind = bsxfun(@plus, [1;4], 0:4:2*n-1);
result = c(ind(1:n)).';
这将处理
a1
(和a2
)中的元素数为奇数或偶数的情况:
c = b.'; %'//
n = numel(a1);
ind = bsxfun(@plus, [1;4], 0:4:2*n-1);
result = c(ind(1:n)).';
a1
和a2
不一定要排序,因此这将改变结果中的元素顺序OP是否明确表示向量未排序?我实际上认为它们是被排序的,因为OP评论说它想使用linspace()
,它创建了一个有序向量,但没有,因为数字不是线性间隔的。不管怎样,我的假设可能是错的,也可能不是。但在不确定的情况下,一定是OP澄清了问题。当提问者没有说输入满足某个限制(正在排序)时,明智的做法是假设它们不一定满足该限制。例如,假设值都是0.5
的倍数,则不保证a1
和a2
不必排序,因此这将改变结果中的元素顺序OP是否明确表示向量未排序?我实际上认为它们是被排序的,因为OP评论说它想使用linspace()
,它创建了一个有序向量,但没有,因为数字不是线性间隔的。不管怎样,我的假设可能是错的,也可能不是。但在不确定的情况下,一定是OP澄清了问题。当提问者没有说输入满足某个限制(正在排序)时,明智的做法是假设它们不一定满足该限制。例如,假设值都是0.5
的倍数,则不保证出于好奇,最终输出包含已排序的数字?@tashuhka该示例看起来是已排序的,但我用粗体表示“数字不会是线性的,因此我不能使用linspace命令”。我试图使示例尽可能简单,也许我让它变得简单了。下一次我将使用随机数出于好奇,最终输出包含排序的数字?@tashuhka该示例看起来是排序的,但我用粗体字“数字不会是线性的,所以我不能使用linspace命令”。我试图使示例尽可能简单,也许我使它变得简单。下次我将使用随机数