On matlab: I have a vector P. I want to store the values P(k+1) - P(k) in a new vector M. I can do it with a for loop, but is there anything more efficient (I have a huge vector).
问问题
66 次
3 回答
1
简单的解决方案
差值 = V(2:n) - V(1:n-1) 其中 n 是向量 V 的大小;
n = 尺寸(V,1);
于 2013-10-29T07:53:35.443 回答
1
正如 Marcin 所说,使用diff
. 对于一维向量,diff(a)
。对于沿暗淡 1 的差异,diff(a,[],1)
. 沿着 dim 2,使用diff(a,[],2)
.
于 2013-10-29T07:25:21.627 回答
-1
我认为只制作你的向量 P 可能更容易,然后复制它并稍微移动它。如果您制作向量 Pk(您的常规 P 向量,但在上面填充)然后制作 Pk+1(我们称之为 Pkp1)并在下面填充它。
Pk = [0 P];
Pkp1 = [P 0];
M = Pkp1 - Pk
这使它成为一个元素矩阵运算,它总是比循环更快。如果您的递归算法需要,您可以更改为 0 填充。
我希望这对你有所帮助。马丁
于 2013-10-29T10:12:15.643 回答