Matlab 使用步长和窗口大小重塑向量
例如,我有一个向量Matlab 使用步长和窗口大小重塑向量,matlab,reshape,Matlab,Reshape,例如,我有一个向量 A = [1 2 3 4 5 6 7 8] 我想用windowsize=4和stepsize=2将其重塑为矩阵,这样得到的矩阵是 b = [ 1 3 5; 2 4 6; 3 5 7; 4 6 8 ] 你可以建立一个索引矩阵,然后索引到一个 注;在本例中,idx和b是相同的,但您需要最后的索引步骤,前提是在实际示例中A不仅仅是连续整数。您可以设置索引矩阵,然后索引到 注;在本例中,idx和
A = [1 2 3 4 5 6 7 8]
我想用windowsize=4和stepsize=2将其重塑为矩阵,这样得到的矩阵是
b = [ 1 3 5;
2 4 6;
3 5 7;
4 6 8 ]
你可以建立一个索引矩阵,然后索引到一个
注;在本例中,idx和b是相同的,但您需要最后的索引步骤,前提是在实际示例中A不仅仅是连续整数。您可以设置索引矩阵,然后索引到
注;在本例中,idx和b是相同的,但您需要最后的索引步骤,前提是在实际示例中,A不仅仅是连续整数。请您进一步说明,Windows大小和步长是什么意思?此外,这不是重塑,因为矩阵值似乎在结果b中出现多次!?'“窗口大小”表示输出矩阵“b”中一列中的元素数。这里,前4个元素填充“b”中的第一列,在步长间隔之后,在“b”中填充第二列之后,在步长间隔之后,在“b”中填充第三列之后,在“b”中填充第二列之后,再填充第二列之后的4个元素,因此,请您进一步说明,窗口大小和步长是什么意思?此外,这不是重塑,因为矩阵值似乎在结果b中出现多次!?'“窗口大小”表示输出矩阵“b”中一列中的元素数。此处,前4个元素填充“b”中的第一列,在步长间隔之后,此处,在“b”中填充第二列的2个后续4个元素,在步长间隔之后,再次在“b”中填充第三列的4个元素,因此采用相同的方法,但是使用隐式扩展而不是bsxfun,您可以使用以下代码:idx=1:s:numelA-s+0:w-1.@obchardon是的,在MATLAB R2016b之后,这些代码是等效的。。。当然,与使用bsxfun相比,您使它看起来更紧凑,主要是因为缩短了变量名;我通过使用缓冲区函数得到了这个问题的另一个解决方案:idx=buffer1:8,windowsize,stepsize,'nodelay';使用相同的方法,但使用隐式扩展而不是bsxfun,您可以使用以下代码:idx=1:s:numelA-s+0:w-1.@obchardon是的,在MATLAB R2016b之后,这些代码是等效的。。。当然,与使用bsxfun相比,您使它看起来更紧凑,主要是因为缩短了变量名;我通过使用缓冲区函数得到了这个问题的另一个解决方案:idx=buffer1:8,windowsize,stepsize,'nodelay';
A = [1 2 3 4 5 6 7 8];
windowsize = 4;
stepsize = 2;
% Implicit expansion to create a matrix of indices
idx = bsxfun( @plus, (1:windowsize).', 0:stepsize:(numel(A)-windowsize) );
b = A(idx);