1

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).

4

3 回答 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 回答