Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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
MATLAB:复制向量的前n个元素,然后跳过n个元素,然后复制下n个元素_Matlab_Vector - Fatal编程技术网

MATLAB:复制向量的前n个元素,然后跳过n个元素,然后复制下n个元素

MATLAB:复制向量的前n个元素,然后跳过n个元素,然后复制下n个元素,matlab,vector,Matlab,Vector,向量x是2000乘1 我想将向量x的第一个20元素复制到向量y,然后将向量x的下一个20元素复制到向量z,然后将下一个20元素复制到向量y,依此类推 我知道我可以用循环来实现这一点,但我希望找到一种更有效的方法。这可以通过将向量重塑为矩阵、选择奇偶列并最终展平矩阵来实现: m = reshape(a, 20, []); x = m(:,1:2:end); x = x(:); z = m(:,2:2:end); z = z(:); 这可以通过将向量重塑为矩阵、选择奇偶列并最终展平矩阵来实现

向量
x
是2000乘1

我想将向量
x
的第一个
20
元素复制到向量
y
,然后将向量
x
的下一个
20
元素复制到向量
z
,然后将下一个
20
元素复制到向量
y
,依此类推


我知道我可以用循环来实现这一点,但我希望找到一种更有效的方法。

这可以通过将向量重塑为矩阵、选择奇偶列并最终展平矩阵来实现:

 m = reshape(a, 20, []);
 x = m(:,1:2:end); x = x(:);
 z = m(:,2:2:end); z = z(:);

这可以通过将向量重塑为矩阵、选择奇偶列并最终展平矩阵来实现:

 m = reshape(a, 20, []);
 x = m(:,1:2:end); x = x(:);
 z = m(:,2:2:end); z = z(:);

这个想法很好,但最后我检查了一下,Matlab不允许订阅函数结果。可能需要一些额外的临时变量。当我有名为“a”的2000x1向量时,这似乎会抛出错误消息“error:()-索引必须在索引表达式中最后出现。”。你知道这是为什么吗?好的,八度音程允许这样做。
m=重塑(a,[20,50])
将抛出一个错误以及
20*50~=20*100
。另外,
m(:,1:2:end)(:)
仍然无效。这个想法很好,但最后我检查了一下,MATLAB不允许订阅函数结果。可能需要一些额外的临时变量。当我有名为“a”的2000x1向量时,这似乎会抛出错误消息“error:()-索引必须在索引表达式中最后出现。”。你知道这是为什么吗?好的,八度音程允许这样做。
m=重塑(a,[20,50])
将抛出一个错误以及
20*50~=20*100
。而且
m(:,1:2:end)(:)
仍然是无效的MATLAB语法