相关疑难解决方法(0)

在Matlab中有效地计算成对平方欧几里德距离

给出两组 - d维点.如何在Matlab中最有效地计算成对平方欧氏距离矩阵

符号: 集合1由(numA,d)-matrix 给出A,集合2由(numB,d)-matrix 给出B.得到的距离矩阵应为格式(numA,numB).

示例点:

d = 4;            % dimension
numA = 100;       % number of set 1 points
numB = 200;       % number of set 2 points
A = rand(numA,d); % set 1 given as matrix A
B = rand(numB,d); % set 2 given as matrix B
Run Code Online (Sandbox Code Playgroud)

performance matlab distance matrix euclidean-distance

13
推荐指数
1
解决办法
3916
查看次数

Matlab中的速度有效分类

我有一个大小为RGB的图像uint8(576,720,3),我想将每个像素分类为一组颜色.我已经使用rgb2labRGB 转换为LAB空间,然后删除了L层,因此它现在double(576,720,2)由AB组成.

现在,我想将其归类为我在另一幅图像上训练的一些颜色,并将它们各自的AB表示计算为:

Cluster 1: -17.7903  -13.1170
Cluster 2: -30.1957   40.3520
Cluster 3:  -4.4608   47.2543
Cluster 4:  46.3738   36.5225
Cluster 5:  43.3134  -17.6443
Cluster 6:  -0.9003    1.4042
Cluster 7:   7.3884   11.5584
Run Code Online (Sandbox Code Playgroud)

现在,为了将每个像素分类/标记到簇1-7,我目前执行以下操作(伪代码):

clusters;
for each x
  for each y
    ab = im(x,y,2:3);
    dist = norm(ab - clusters); // norm of dist between ab and each cluster
    [~, idx] = min(dist);
  end
end
Run Code Online (Sandbox Code Playgroud)

然而,由于图像分辨率和我手动遍历每个x和y,这非常慢(52秒).

是否有一些我可以使用的内置函数执行相同的工作?必须有.

总结一下:我需要一种分类方法,将像素图像分类为已定义的一组聚类.

performance matlab classification machine-learning data-mining

7
推荐指数
1
解决办法
487
查看次数

如何矢量化从矢量中找出最近的点

BigList = rand(20, 3)
LittleList = rand(5, 3)
Run Code Online (Sandbox Code Playgroud)

我想为大列表中的每一行找到小列表中的"最近"行,由欧几里德范数定义(即k = 3维度中相应值之间的平方距离之和).

我可以看到如何使用两个循环来做到这一点,但似乎应该有一个更好的方法来使用内置矩阵操作来做到这一点.

matlab vectorization euclidean-distance

2
推荐指数
1
解决办法
137
查看次数