具有不同非单一维度的 MATLAB bsxfun
MATLAB bsxfun with different non-singleton dimensions
我有两组(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);
我有两组(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);