我有两个向量,并且我试图在不使用 for 循环的情况下在一定容差内找到一个向量与另一个向量的所有重合。\n容差我的意思是,例如,如果我有数字 3,容差为 2,我会想要将值保持在 3\xc2\xb12 范围内,即 (1,2,3,4,5)。
\nA = [5 3 4 2]; B = [2 4 4 4 6 8];\nRun Code Online (Sandbox Code Playgroud)\n我想要获得一个元胞数组,其中每个元胞上包含所有重合的数量,容差为 1(或更多)单位。(A = B +- 1)\n我有一个单位为零的解 (A = B),如下所示:
\ntol = 0;\n[tf, ia] = ismembertol(B,A,tol,'DataScale',1); % For tol = 0, this is equivalent to using ismember\nidx = 1:numel(B);\nib = accumarray(nonzeros(ia), idx(tf), [], @(x){x}) % This gives the cell array\nRun Code Online (Sandbox Code Playgroud)\n输出是:
\nib = \n[]\n[]\n[2 3 4]\n[1]\nRun Code Online (Sandbox Code Playgroud)\n这是所期望的。\n如果我将容差更改为 1,则代码将无法按预期工作。它输出:
\ntol = 1\n[tf, ia] …Run Code Online (Sandbox Code Playgroud)