gpt4 book ai didi

matlab - 矢量化和矢量索引

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:53 24 4
gpt4 key购买 nike

我目前需要稍微加快我的代码,因此想使用矢量化而不是循环。以下代码是在我的计算过程中被多次调用的代码的(非常)简化版本:

    T=10; n=5; w0 = 25000; w1 = 23000; b0 = 15000; 
vec = zeros(1,T+2*n+1); vec(1:n+1) = w0; vec(n+2:n+T+1) = b0; vec(n+T+2:T+2*n+2) = w1;
ref0=zeros(1,n);
for i = 1:n
ref0(i) = sum(vec(T+i+2:n+T+i+2));
end

我尝试使用向量化,但不幸的是它似乎不起作用,因为只有我的向量 i 的第一个条目用作向量索引过程中的输入:

i = 1:n;
ref1 = sum(vec(T+i+2:n+T+i+2));

输出如下:

ref0 =

106000 114000 122000 130000 138000

ref1 =

106000

有什么方法可以使用矢量化实现 ref1 提供与 ref0 相同的输出?这可能非常明显,但我似乎并没有在这里更进一步。我很感激任何帮助!非常感谢。

最佳答案

您可以使用 movsum而不是你的循环:

ref1 = movsum(vec(T+3:T+2*n+2),n+1,'Endpoints','discard');

关于matlab - 矢量化和矢量索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41983888/

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