【发布时间】:2014-08-02 13:52:49
【问题描述】:
我真的需要这方面的帮助。
我必须矩阵 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);
没关系。但我现在需要的是:
我要相乘,取一个叫alpha的向量的tensor-product,也叫Kronecker product到LBR,alpha给出如下:
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),[]);
我现在需要的是:我需要解决同样的问题minproblem:
[d,p] = min((LBR(:,1) - var1).^2 + (LBR(:,2) - var2).^2 + (LBR(:,3) - var3).^2);
但是,这一次,除了从满足min问题的L1和L2中找到索引位置和值之外,我还需要找到单的索引位置 来自alpha 向量的值,该向量已相乘并满足min 问题。我不知道我该怎么做,所以非常感谢任何帮助!
提前致谢!
Ps:如果需要,我可以发布 L1 和 L2 矩阵。
【问题讨论】:
标签: matlab min matrix-multiplication bsxfun