在octave/matlab中递归计算数组值

问题描述 投票:0回答:1

有一个数组,其第n项是使用第(n-1)项计算的。如何有效地完成此操作(无需 for 循环)?

例如:

A(n) = B(n) + (A(n-1) - B(n)) * e^(-t(n))

A(n) = A(n-1) * e^(-t(n)) + B(n) * (1 - e^(-t(n)))

循环的示例:

t=[1:1000];
B=[1:1000].^2;
A=zeros(1,1000);
A(1)=0;
for n=[2:length(t)]
    A(n) = B(n) + (A(n-1) - B(n)) * e^(-t(n));
endfor
plot(t, A)

编辑:我更喜欢八度解决方案,所以我删除了 matlab 标签。不过,如果有一个 matlab 函数可以做到这一点,我仍然感兴趣。

arrays octave
1个回答
0
投票

我的结论是,在 Octave/Matlab 中以“更高效”的方式消除这样的

for
循环目前是不可能的。 消除重复现象是可能的,但考虑到它的实现方式,它不会提供性能优势。

如果性能是一个问题,那么转向另一种语言是最好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.