gpt4 book ai didi

arrays - 将列末尾的元素与下一行开头的元素相加

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

假设我在 Matlab 中有以下矩阵:

A = [1 2 3
4 5 6
7 8 9
3 2 1
6 5 4];

现在假设我想要一个向量如下:

v = [1 4 7 3 6 0 0 0 0 0 0] + [0 0 0 2 5 8 2 5 0 0 0] + [0 0 0 0 0 0 3 6 9 1 4];

也就是说,我想按列读取 A 但我希望每列的最后 2 个元素与下一列的前 2 个元素相加(第一列的最后一个元素与第二个元素第 2 列,第 1 列的第 4 个元素与第 2 列的第 1 个元素,等等)

现在,如果 A 的维度非常大,我如何在没有循环的情况下有效地完成这个过程?

感谢您的回答。

最佳答案

您可以从零填充列创建一个稀疏矩阵并沿其第二个维度求和:

s = size(A);
f = s(1) - 2;
r = (1:s(1)).' + (0:f:(s(2) - 1) * f);
c = repmat(1:s(2), s(1), 1);
M = sparse(r, c, A);
v = full(sum(M, 2));

关于arrays - 将列末尾的元素与下一行开头的元素相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65891085/

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