我真的需要這個幫助。bsxfun實現中求解min。優化任務
我得矩陣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);
,返回的這min
- 問題是fulfied點p
。最後我可以回到我的矩陣L1
和L2
找到滿足這個min
-問題的值的索引位置。我做到了這一點,如下所示:
[minindex_alongL2, minindex_alongL1] = ind2sub(size(L1),p);
這是可行的。但我現在需要的是:
我要乘,坐tensor-product
,也被稱爲所謂的alpha
到LBR
載體Kronecker product
,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),[]);
什麼,我現在需要的是:我需要解決同樣min
問題:
[d,p] = min((LBR(:,1) - var1).^2 + (LBR(:,2) - var2).^2 + (LBR(:,3) - var3).^2);
但是,這一次,除了尋找從L1
和L2
指數位和值滿足該min
- 問題的,我需要找到從單值的索引位置已經成倍增加並且滿足min
-問題的向量alpha
。我不知道我該如何做到這一點,所以任何幫助將非常感激!
在此先感謝!如果需要,我可以張貼L1
和L2
矩陣。
嗨@Divakar,明天我會試試你的建議。非常感謝您的幫助...... D: –
@SergioHaram讓我知道它是怎麼回事! :) – Divakar
我很抱歉,我不得不嘗試您的建議,當然沒有必要這樣做,您的代碼完美無缺! :D我實際上已經嘗試了很多'ind2sub'的變體 - 'alpha',但我沒有想到我應該使用'numel',爲什麼?爲什麼'size(alpha)'不起作用?而且,我非常抱歉,我可以給你一個upvote! :) –