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语法