gpt4 book ai didi

具有不同非单一维度的 MATLAB bsxfun

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:58 24 4
gpt4 key购买 nike

我有两组(50 个训练和 25 个测试)大小为 42 的直方图集。(这些数字是任意的,它们在现实中会更大,所以我正在寻找一种有效的方法。而且约定可能是相反的在转置方面,请随意使用任何约定 [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);

关于具有不同非单一维度的 MATLAB bsxfun,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31771546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com