我有2個數據數組,我想從中提取公共元素。 Matlab的intersect
完成這項工作。但它返回的是完全相同的元素。如果我想提取具有一定寬容度的元素,該怎麼辦?舉例來說,如用容差相交兩個數組
A = [1 2 3.0002 4.125 5.89];
B = [2 3.012 4.126]
我想提取相同的元素最多2個小數位。所以我想要的答案是[2 4.12]
。有沒有內置的功能來做到這一點?或者我如何實現這一目標?
我有2個數據數組,我想從中提取公共元素。 Matlab的intersect
完成這項工作。但它返回的是完全相同的元素。如果我想提取具有一定寬容度的元素,該怎麼辦?舉例來說,如用容差相交兩個數組
A = [1 2 3.0002 4.125 5.89];
B = [2 3.012 4.126]
我想提取相同的元素最多2個小數位。所以我想要的答案是[2 4.12]
。有沒有內置的功能來做到這一點?或者我如何實現這一目標?
我只想round
輸入:
C = intersect(round(A,2),round(B,2))
floor
和ceil
也是選項,這取決於你真正想要什麼實現。
您可以手動進行如下操作。這會從A
中選取輸出值;如果你想從B
回暖只是交換A
和B
代碼:
A = [1 2 3.0002 4.125 5.89];
B = [2 3.012 4.126];
tol = .01;
result = A(any(abs(bsxfun(@minus, A(:).', B(:))) < tol, 1));
對於早於2014b的matlab版本,使用'C = intersect(round(A * 10^n)/ 10^n,round(B * 10^n)/ 10^n)',其中'n'是數字你希望你的元素是相同的小數位。 – Rhinocerotidae