小编hav*_*ife的帖子

查找两个向量之间的多个重合

我有两个向量,并且我试图在不使用 for 循环的情况下在一定容差内找到一个向量与另一个向量的所有重合。\n容差我的意思是,例如,如果我有数字 3,容差为 2,我会想要将值保持在 3\xc2\xb12 范围内,即 (1,2,3,4,5)。

\n
A = [5 3 4 2]; B = [2 4 4 4 6 8];\n
Run Code Online (Sandbox Code Playgroud)\n

我想要获得一个元胞数组,其中每个元胞上包含所有重合的数量,容差为 1(或更多)单位。(A = B +- 1)\n我有一个单位为零的解 (A = B),如下所示:

\n
tol = 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\n
Run Code Online (Sandbox Code Playgroud)\n

输出是:

\n
ib = \n[]\n[]\n[2 3 4]\n[1]\n
Run Code Online (Sandbox Code Playgroud)\n

这是所期望的。\n如果我将容差更改为 1,则代码将无法按预期工作。它输出:

\n
tol = 1\n[tf, ia] …
Run Code Online (Sandbox Code Playgroud)

arrays matlab slice

5
推荐指数
1
解决办法
88
查看次数

标签 统计

arrays ×1

matlab ×1

slice ×1