在matlab中从另一个中减去向量的每个元素?

时间:2013-11-27 05:08:34

标签: matlab

我有一个列向量,例如

1

0

3

2

在每一行,我想减去它上面的数字,比如,

row1:null

第2行:0 - 1 = -1

第3行:3 - 0 = 3和3 - 1 = 2 ..等等,以便获得这样的东西

-1

3 2

-1 2 1

有人可以指导我使用高效的MATLAB代码而不使用for循环,因为原始数据中的行数太长了。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以采取以下措施:

V = [1;0;3;2];
tril(bsxfun(@minus,V,V'),-1);

这给了我以下内容:

ans =

 0     0     0     0
-1     0     0     0
 2     3     0     0
 1     2    -1     0

这样做的主要缺点是,如果V非常长,它会占用大量内存(但无论如何,这都会成为问题)。您可以通过使V稀疏来减少内存使用量。

相关问题