【发布时间】:2016-07-13 11:39:40
【问题描述】:
我需要做这样的功能:
N1 = size(X,1);
N2 = size(Xtrain,1);
Dist = zeros(N1,N2);
for i=1:N1
for j=1:N2
Dist(i,j)=D-sum(X(i,:)==Xtrain(j,:));
end
end
(X和Xtrain是稀疏逻辑矩阵)
它运行良好并通过了测试,但我认为它不是非常理想且编写良好的解决方案。
如何使用一些内置的 Matlab 函数来改进该函数?我是 Matlab 的新手,所以我不知道是否真的有机会让它变得更好。
【问题讨论】:
-
是的,我知道 pdist2(X,Xtrain,'hamming').*D 工作正常,但我想要别的东西。我正在学习 Matlab,想知道是否可以用更好的方法替换 for 循环语句。
-
你可以把它写成一个for循环,每次迭代向量化整个列。您甚至可以在没有任何循环的情况下进行计算,但这会涉及多次重复数据会消耗更多的内存。但同样,
pdist2有什么问题? -
如何将它作为一个 for 循环迭代来完成?我已经尝试过了,但无法实现。 pdist2 没有任何问题,最终我可能会使用该功能来完成。我只是想了解 Matlab 中的矩阵和向量运算,我想知道我该怎么做,例如。使用矢量化操作(如您所述)。
-
在下面查看我的几个实现的答案
标签: matlab for-loop matrix sum sparse-matrix