matlab中的负距离和正距离

时间:2017-05-23 20:01:54

标签: matlab

例如,我有一个N乘矢量(N是5):

x=[1,2,3,4,5];

我想创建一个N-by-N矩阵M,其中M(i,j)=x(i)-x(j)M(j,i) = -1 * M(i,j)

任何人都可以在没有循环的情况下提供简单的方法吗?

1 个答案:

答案 0 :(得分:4)

您可以使用二进制单例扩展bsxfun

bsxfun(@minus,x.',x)

或(在2016b或更高版本中)隐式扩展:

x.'-x

两者都会导致:

ans =
     0    -1    -2    -3    -4
     1     0    -1    -2    -3
     2     1     0    -1    -2
     3     2     1     0    -1
     4     3     2     1     0

此方法完全按照您的要求执行 - 将函数应用于 a b 的所有组合。在您的情况下, a b 只是x本身,而且函数是负数(在{{1中用@写的在隐式扩展中,或者作为简单的运算符bsxfun

由于您要从行-中减去列j,因此您应首先编写代表行的列i(即x索引,然后是行x.',代表索引。