1

我真的需要这个帮助。

我必须矩阵L1L2,两者都是(500x3)大小。

首先,我计算L1from每一列的每个元素的差异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。最后我可以回到我的矩阵L1L2找到满足这个问题的值的索引位置min。我这样做如下:

[minindex_alongL2, minindex_alongL1] = ind2sub(size(L1),p);

还行吧。但我现在需要的是:

我必须乘以 ,tensor-product也称为Kronecker product向量alphaLBRalpha给出如下:

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找到单个值的索引位置。我不知道我该怎么做,所以任何帮助都将不胜感激!L2minalphamin

提前致谢!

Ps:如果需要,我可以发布L1L2矩阵。

4

1 回答 1

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可能会引起您的兴趣。

于 2014-06-12T16:35:03.627 回答