gpt4 book ai didi

matlab - 如何通过移动特定间隔有效地将一个列矩阵 reshape 为许多特定长度的列

转载 作者:行者123 更新时间:2023-12-02 11:33:01 25 4
gpt4 key购买 nike

输入是一个 N-by-1 矩阵。我需要将其 reshape 为 L-by-M 矩阵。下面是一个例子。

输入:

b =

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

设置长度=18,输出:

X =

1 2 3
2 3 4
3 4 5
4 5 6
5 6 7
6 7 8
7 8 9
8 9 10
9 10 11
10 11 12
11 12 13
12 13 14
13 14 15
14 15 16
15 16 17
16 17 18
17 18 19
18 19 20

因为我有一个非常大的矩阵,使用循环来 reshape 效率非常低。如何提高 reshape 速度?

最佳答案

您的示例输出矩阵X是索引长度为N的向量以获得您想要的结果的完美矩阵。使用 bsxfun 创建也非常容易:

N = 20;
b = rand(N,1);

M = 3; %// number of columns
L = N-M; %// Note that N-M is an upper limit for L!
idx = bsxfun(@plus, (0:L)', 1:M)

X = b(idx)

关于matlab - 如何通过移动特定间隔有效地将一个列矩阵 reshape 为许多特定长度的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35622664/

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