我有一个列向量,例如
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循环,因为原始数据中的行数太长了。
提前致谢。
答案 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
稀疏来减少内存使用量。