MATLAB bsxfun与不同的非单维



我有两个大小为42的直方图集(50个训练和25个测试)。(这些数字是任意的,它们在现实中会大得多,所以我在寻找一种有效的方法。此外,在转置方面,约定可能是相反的,所以可以随意使用任何约定[feature x observation]或[observation x feature])

x1的大小为[42, 50], x2的大小为[42, 25]。我想计算大小为[50, 25]的直方图交集核。直方图交集核是指包含两个直方图中最小元素的向量的和。我如何用MATLAB做到这一点?

我尝试了k=sum(bsxfun(@min, x1,x2));(与转置变化),但我得到错误:

Error using bsxfun
Non-singleton dimensions of the two input arrays must match each other.

谢谢你的帮助!

您想要一个大小为[50,25]的输出,该输出已经汇总。bsxfun的输出应该是[50,25,42]的维度,这意味着除了单维度之外,所有的输入都必须是这个尺寸。您的[42, 50]需要排列为[50,1,42],第二个输入为[1,25,42]

x1=rand(42,50);
x2=rand(42,25);
x1=permute(x1,[2,3,1]);
x2=permute(x2,[3,2,1]);
t=bsxfun(@min, x1,x2);
k=sum(t,3);

相关内容

  • 没有找到相关文章

最新更新