在Matlab中优化成对距离函数的参数

Langma

这个问题与matlab有关:从两个数组的同一条目中找到公共值的索引

假设我有一个100010000一个包含价值矩阵012每行都视为一个样本。我想根据公式计算这些样品之间的成对距离d = 1-1/(2p)sum(a/c+b/d),其中abcd可以以作为长度的行向量处理10000根据一些定义和p=10000c并且d是这样的概率c+d=1

如何找到的值的例子abcd:假设我们想找到d样本之间i和bj的话,我看行ij

如果k排个入口ij具有价值22,然后a=2,b=0,c=1,d=0(我想我会分配0/0=0在这种情况下)。

如果k排个入口ij具有价值21反之亦然,然后a=1,b=0,c=3/4,d=1/4

类似的分配将赋予2,0a=0,b=0,c=1/2,d=1/2),1,1a=1,b=1,c=1/2,d=1/2),1,0a=0,b=1,c=1/4,d=3/4),0,0a=0,b=2,c=0,d=1)。

到目前为止,我拥有的Matlab代码是fori使用循环j,然后通过使用查找上面的情况find,然后为a/c创建两个数组b/d这非常慢,有没有办法可以提高效率?

编辑:距离d本文第13页中给出的公式

不是这样的

如果这些系数是固定的,那么我认为我已经成功地向量化了距离函数。弄清楚公式很有趣。我稍微翻转了一些东西以最大程度地减少除数,并且由于pdist直到@horchler的注释我才意识到,因此将其包裹在循环中,并排除了常量:

% m is the data
[n p] = size(m, 1);
distance = zeros(n);
for ii=1:n
    for jj=ii+1:n
        a = min(m(ii,:), m(jj,:));
        b = 2 - max(m(ii,:), m(jj,:));
        c = 4 ./ (m(ii,:) + m(jj,:));
        c(c == Inf) = 0;
        d = 1 - c;

        distance(ii,jj) = sum(a.*c + b.*d);
        % distance(jj,ii) = distance(ii,jj); % optional for the full matrix
    end
end
distance = 1 - (1 / (2 * p)) * distance;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Matlab 中优化多个参数

来自分类Dev

成对L2距离计算的优化

来自分类Dev

C ++中的成对距离计算

来自分类Dev

在MATLAB中优化/向量化Mahalanobis距离计算

来自分类Dev

Matlab中的优化:如何定义参数约束

来自分类Dev

在NumPy中向量化成对列元素明智乘积

来自分类Dev

在Dart中的可选参数构造函数中使用构造函数初始化成员

来自分类Dev

Matlab中多变量函数的优化

来自分类Dev

对于给定位移,优化阵列的距离成对计算

来自分类Dev

在C中优化函数的参数(GCCarm)

来自分类Dev

如何在C ++中初始化成员的构造函数参数

来自分类Dev

计算缺少值的scipy中的成对距离

来自分类Dev

Haskell中数字列表的成对距离

来自分类Dev

熊猫中不同元素的成对距离

来自分类Dev

将成对距离转换为R中的距离矩阵

来自分类Dev

访问距离矩阵中的特定成对距离(scipy / numpy)

来自分类Dev

R中的距离计算优化

来自分类Dev

向量化成对排列

来自分类Dev

优化函数参数丢失

来自分类Dev

在Matlab中高效计算成对平方的欧几里得距离

来自分类Dev

在Matlab中高效计算成对平方的欧几里得距离

来自分类Dev

Matlab Fmincon优化中输入参数错误不足

来自分类Dev

Matlab-构造函数不会初始化成员值

来自分类Dev

类型擦除和可变参数模板化成员函数

来自分类Dev

Matlab至Julia优化:JuMP @SetNLObjective中的函数

来自分类Dev

在非线性优化函数“ nloptr”中传递参数

来自分类Dev

MATLAB-将参数传递给pdist自定义距离函数

来自分类Dev

Matlab:访问函数句柄中的隐藏参数

来自分类Dev

在Matlab中为函数编写输入参数