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);