gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:56:44 24 4
gpt4 key购买 nike

我想通过用“零”填充较短的矩阵来连接不同维度的矩阵。如何在 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

而且我不断收到下标赋值维度不匹配错误。我如何从向量中连续删除行,然后将它们连接成一个矩阵?

最佳答案

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(:))

sample 运行-

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

关于matlab - 如何使用零作为填充符连接不同维度的矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com