在matlab中从向量的每个元素中减去其他元素?

在matlab中从向量的每个元素中减去其他元素?,matlab,Matlab,例如,我有一个列向量 一, 0 三, 二, 在每一行,我想减去上面的数字,比如 第1行:空 第2行:0-1=-1 第3行:3-0=3和3-1=2。。等等,以便得到这样的东西 空的 -一, 3.2 -1 2 1 有没有人能在不使用for循环的情况下指导我使用一个高效的MATLAB代码,因为我的原始数据中的行数太长了 提前感谢。您可以按照以下方式做一些事情: V = [1;0;3;2]; tril(bsxfun(@minus,V,V'),-1); 这给了我以下信息: ans = 0 0

例如,我有一个列向量

一,

0

三,

二,

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

第1行:空

第2行:0-1=-1

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

空的

-一,

3.2

-1 2 1

有没有人能在不使用for循环的情况下指导我使用一个高效的MATLAB代码,因为我的原始数据中的行数太长了


提前感谢。

您可以按照以下方式做一些事情:

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稀疏,可以潜在地减少内存使用