【发布时间】:2018-12-02 19:57:31
【问题描述】:
我想计算一个 n 通道矩阵的每个元素之间的欧几里得距离,然后将函数 exp(-dist) 应用于它。我的矩阵是 MxN,所以输出必须是 (MxN)x(MxN)。
这是我目前的代码:
MAX=M*N;
A = zeros([MAX,MAX]);
dist= zeros([MAX,MAX]);
for x1=1:MAX
for x2=1:MAX
for i=1:M
for j=1:N
for s=1:M
for z=1:N
%every pixel is a vector rgb
dist(x1,x2) = norm((imIn(i,j)-imIn(s,z)),3);
A(x1,x2) = exp(-dist);
end
end
end
end
end
end
它真的很慢而且不起作用 - 它只给出一个。
【问题讨论】:
-
当你写了这么多 for 循环时,你的想法是什么?
-
我猜缺乏灵感
-
你为什么要问欧几里得距离和
n通道,但同时给出一个只有1个通道的例子?我是否遗漏了什么,或者您的输入实际上是MxNxC?您是否打算将您获得的任何解决方案循环应用到每个渠道?
标签: image matlab matrix euclidean-distance pairwise