如何使用零作为填充来连接不同维度的矩阵?

Mys*_*ter 2 matlab matrix

我想通过用"零"填充较短的矩阵来连接具有不同维度的矩阵.如何在for循环中做到这一点?

例如,我有一个名为x(92x1)向量的数据集.我想通过删除连续的10行(92x1,82x1,72x1,62x1 ... 2x1)然后将所有生成的向量组合成一个具有9列的矩阵来多次截断此向量.

我用过代码:

CN_trunc = zeros(92, 9);
for i = 1:9
    CN_trunc(:,:) = x(1:(92 - i*10), 1));
end
Run Code Online (Sandbox Code Playgroud)

而且我一直收到Subscripted assignment dimension mismatch错误.我如何能够连续删除矢量中的行,然后将它们连接成一个矩阵?

Div*_*kar 6

如何解决它的bsxfun基础vectorized方法 -

%// Sample Input and cutting/deleting length
x = rand(12,1) %// For your actual problem x would be of length 92
cutlen = 5;    %// Edit this to 10 for your stated problem

lens = numel(x):-cutlen:1;
out = bsxfun(@times,bsxfun(@ge,lens,[1:max(lens)]'),x(:))
Run Code Online (Sandbox Code Playgroud)

样品运行 -

x =
    0.6679
    0.6035
    0.5261
    0.7297
    0.7073
    0.7814
    0.2880
    0.6925
    0.5567
    0.3965
    0.0616
    0.7802
out =
    0.6679    0.6679    0.6679
    0.6035    0.6035    0.6035
    0.5261    0.5261         0
    0.7297    0.7297         0
    0.7073    0.7073         0
    0.7814    0.7814         0
    0.2880    0.2880         0
    0.6925         0         0
    0.5567         0         0
    0.3965         0         0
    0.0616         0         0
    0.7802         0         0
Run Code Online (Sandbox Code Playgroud)