0
A = [1 3 5 8]
B = [1 2 3 4 5 6 7 8]
我想創建矢量C
返回元件的ROWNUMBER在矢量A
與最小的非負差值的每個元件在矢量B
元件之間的最小正差。查找矢量
因此,考慮到上面的例子中,它應該返回:
C = [1 2 2 3 3 4 4 4]
A = [1 3 5 8]
B = [1 2 3 4 5 6 7 8]
我想創建矢量C
返回元件的ROWNUMBER在矢量A
與最小的非負差值的每個元件在矢量B
元件之間的最小正差。查找矢量
因此,考慮到上面的例子中,它應該返回:
C = [1 2 2 3 3 4 4 4]
我敢肯定有很多方法可以做到這一點。這裏有一個:
A = [1 3 5 8]
B = [1 2 3 4 5 6 7 8]
%create matrices of the values to subtract
[a,b] = meshgrid(A,B);
%subtract
aLessB = a-b;
%make sure we don't use the negative values
aLessB(aLessB < 0) = Inf;
%sort the subtracted matrix
[dum, idx] = sort(aLessB, 2, 'ascend');
idx(:,1)是您正在尋找的解決方案。
的替代解決方案:
D = bsxfun(@minus, A', B);
D(D < 0) = Inf;
[~, C] = min(D, [], 1);
歡迎堆棧溢出。如果你展示你所嘗試過的東西,你會得到更多的幫助,並解釋你卡在哪裏。請查看頁面頂部的「幫助」鏈接,瞭解網站的內容,如何提出問題等。 – John
數組是否總是按照您的示例排序? – japreiss
是的,數組總是排序的。 – AJM