Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在matlab/octave中组合两列数组的奇偶索引_Arrays_Matlab_Octave - Fatal编程技术网

Arrays 在matlab/octave中组合两列数组的奇偶索引

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

我有一个包含两列的数组(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 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命令”。我试图使示例尽可能简单,也许我使它变得简单。下次我将使用随机数