我真的需要帮助。
我必须使用L1
和L2
矩阵,两者都是(500x3)
大小。
首先,我计算L1
中L2
每列的每个元素的差异,如下所示:
lib1 = bsxfun(@minus, L1(:,1)',L2(:,1));
lib1=lib1(:);
lib2 = bsxfun(@minus, L1(:,2)',L2(:,2));
lib2=lib2(:);
lib3 = bsxfun(@minus, L1(:,3)',L2(:,3));
lib3=lib3(:);
LBR = [lib1 lib2 lib3];
结果是这个矩阵LBR
。然后我要解决min
- 问题:
[d,p] = min((LBR(:,1) - var1).^2 + (LBR(:,2) - var2).^2 + (LBR(:,3) - var3).^2);
返回执行此p
- 问题的点min
。最后,我可以回到我的矩阵L1
和L2
,找到满足此min
- 问题的值的索引位置。我这样做了如下:
[minindex_alongL2, minindex_alongL1] = ind2sub(size(L1),p);
这没关系。但我现在需要的是:
我必须乘以tensor-product
,也称Kronecker product
向量alpha
到LBR
,alpha
给出如下:< / p>
alpha = 0:0.1:2;
而且,这个Kronecker product
我计算如下:
val = bsxfun(@times,LBR,permute(alpha,[3 1 2]));
LBR = reshape(permute(val,[1 3 2]),size(val,1)*size(val,3),[]);
我现在需要的是:我需要解决相同的min
问题:
[d,p] = min((LBR(:,1) - var1).^2 + (LBR(:,2) - var2).^2 + (LBR(:,3) - var3).^2);
但是,这一次,除了找到满足L1
问题的L2
和min
的索引位置和值之外,我还需要查找索引的位置。来自alpha
向量的单个值已经成倍增加并且满足min
- 问题。我不知道我怎么能这样做,所以任何帮助都将非常感激!
提前致谢!
Ps:如果需要,我可以发布L1
和L2
矩阵。
答案 0 :(得分:1)
我相信您需要在代码中进行此更正 -
[minindex_alongL2, minindex_alongL1] = ind2sub([size(L2,1) size(L1,1)],p)
对于解决方案,您需要在最后一步中将p
的大小添加到索引查找中,因为计算出min
的向量具有alpha
的“附加影响力” -
[minindex_alongL2, minindex_alongL1,minindex_alongalpha] = ind2sub([size(L2,1) size(L1,1) numel(alpha)],p)
minindex_alongalpha
可能符合您的利益。