【发布时间】:2016-09-01 17:26:55
【问题描述】:
例如,如果我有三个表达式:A、B 和 C,如下所示:
A(i+1) = A(i) + C(i).k
B(i+1) = B(i) + A(i).h
C(i+1) = A(i) + B(i)
其中k 和h 是一些常量,m 和n 是C 的所需大小。 i 是上一个获得的值,i+1 是下一个值。现在,如果我使用for 循环,那么我可以将其编码为:
A(1)= 2;
B(1)= 5;
C(1)= 3;
for i=1:10
A(i+1) = A(i) + C(i)*2;
B(i+1) = B(i) + A(i)*3;
C(i+1) = A(i) + B(i);
end
而且效果很好。但我想以 矢量形式 对其进行编码,就像不必使用循环一样。但问题是我不知道如何绕过以下依赖:
-
A关于其先前的值和先前的C值 -
B之前的值和之前的C值A -
C在A和B的先前值上
【问题讨论】:
-
如果它依赖于以前的值,你不能向量化:(
-
哦,真的。 @AnderBiguri 很伤心。
-
我们不能使用句柄或函数吗? @AnderBiguri
-
矢量化是一种“一次计算所有内容”的方式,如果一个值依赖于以前的值,你就不能这样做。只需做一个 for 循环,这不是 那 坏
-
每当编程无法改善事物时-> 使用数学!
标签: matlab vectorization