Match two columns with names/strings that are not 100% identical

7 Ansichten (letzte 30 Tage)
Dave
Dave am 13 Okt. 2022
Kommentiert: Jan am 14 Okt. 2022
Evening, in a table, is there a way to compare two columns with names/strings and find "similar" matches that are not 100% identical?
Instead, they share 80% or more characters to be considered a match. Ignore case and spaces.
For example, the first entry in column1 is NAME123ABC that has 10 characters, and I woud like the index of column 2 if
1- the percentage of shared characters is 80% or more,
2- the percentage of shared characters is 80% or more AND order of characters is identical.
I attached the table with two columns, the same data is pasted below:
'NAME123ABC' 'XYZ'
'NAME2XYZ' 'Name1ABC'
'NAME3333' 'abc'
'NAME ZZZ' '123A'
'' 'AAA'
'' 'ABC ABC'
'' 'Name1 ABCD'
'' 'abcxyname1'
'' 'NAme 1'
'' 'XYZ2'
'' 'ABC NAME1'
'' '123ABC'
For this example, the answer for
1 - with the condition of at least 80% of characters the indices in column2 are: 2, 7, 8 ,11
2 - with the condition of at least 80% of characters AND order of characters the indices in column2 are: 2, 7
danke
  4 Kommentare
Dave
Dave am 13 Okt. 2022
Bearbeitet: Dave am 13 Okt. 2022
  • The AA vs AAAAAAAA case wouldn't be an issue in my data, but I could still another condition such that intersect(A,B) > x
  • The main issue is how to have 'NAME123ABC' when compared to 'BCA Y301 N2' as NOT a match even though they share 8 out of 10 char. This is the case orderFlag = true
Jan
Jan am 14 Okt. 2022
@Dave: Again, we do need an exact mathematical definition of what you call "a match", before we can implement it as code. What does "order of characters" mean in case of repeated characters?
This case occurs in your test data: "NAME123ABC" and "Name1 ABCD"
We cannot invent this detail for you, because this is the scientific problem you want to solve.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Jan
Jan am 13 Okt. 2022
Pool = {'NAME123ABC', 'NAME2XYZ', 'NAME3333', 'NAME ZZZ'}
Data = {'XYZ', 'Name1ABC', 'abc', '123A', 'AAA', 'ABC ABC', 'Name1 ABCD', ...
'abcxyname1', 'NAme 1', 'XYZ2', 'ABC NAME1', '123ABC'};
Data = lower(strrep(Data, ' ', '')); % Remove spaces
Pool = lower(pool);
orderFlag = true;
match = false(size(Data));
for k = 1:numel(Data)
for p = 1:numel(Pool)
if compare(Data{k}, Pool{p}, orderFlag)
match(k) = true;
break;
end
end
end
function m = compare(A, B, flag)
m = (sum(ismember(A, B)) / numel(A) > 0.8);
if m && flag % Order matters:
... Further clarification required
end
end
  2 Kommentare
Dave
Dave am 13 Okt. 2022
Bearbeitet: Dave am 13 Okt. 2022
Thanks a lot Jan
Made minor changes and the orderFlag=false works great, but how can I solve the case orderFlag=true?
For example, I added the first entry in column2 with 'BCA Y301 N2'
Data = {'BCA Y301 N2', 'XYZ', 'Name1ABC', 'abc', '123A', 'AAA', 'ABC ABC', 'Name1 ABCD', ...
'abcxyname1', 'NAme 1', 'XYZ2', 'ABC NAME1', '123ABC'};
And that will ouput a false positive because it shares 8 out 10 char with 'NAME123ABC'.
So, the orderFlag true case should find consecutive char for at least 50% of the entry. So in the case of the
NAME123ABC this is 5 consecutive char:
NAME1
AME12
ME123
...
23ABC
If any of these are found in Data then true.
I tried using extractBetween or intersect but cannot adapt to consecutive char
Jan
Jan am 14 Okt. 2022
See my comments to your question. The meaning of "order" must be defined accurately before this can be implemented.

Melden Sie sich an, um zu kommentieren.


John D'Errico
John D'Errico am 13 Okt. 2022
Bearbeitet: John D'Errico am 13 Okt. 2022
Searching for degree of similarity is not a completely trivial task. In a sense, you want to describe the distance between two "words" or sequences of characters as a number in some way.
One idea might be to consider PAIRS of consecutive characters. For example, suppose we allow any combination of upper case, lower case, numbers, and a space.
Clist = ['A':'Z','a':'z','0:9',' '];
That represents the universe of things we will care about. I suppose I could add in punctation, etc., but that will do for here.
Now, consider all possible combinations of two consecutive elements from that set.
[C1,C2] = meshgrid(Clist);
Clist2 = [C1(:),C2(:)]
Clist2 = 3136×2 char array
'AA' 'AB' 'AC' 'AD' 'AE' 'AF' 'AG' 'AH' 'AI' 'AJ' 'AK' 'AL' 'AM' 'AN' 'AO' 'AP' 'AQ' 'AR' 'AS' 'AT' 'AU' 'AV' 'AW' 'AX' 'AY' 'AZ' 'Aa' 'Ab' 'Ac' 'Ad' 'Ae' 'Af' 'Ag' 'Ah' 'Ai' 'Aj' 'Ak' 'Al' 'Am' 'An' 'Ao' 'Ap' 'Aq' 'Ar' 'As' 'At' 'Au' 'Av' 'Aw' 'Ax' 'Ay' 'Az' 'A0' 'A:' 'A9' 'A ' 'BA' 'BB' 'BC' 'BD' 'BE' 'BF' 'BG' 'BH' 'BI' 'BJ' 'BK' 'BL' 'BM' 'BN' 'BO' 'BP' 'BQ' 'BR' 'BS' 'BT' 'BU' 'BV' 'BW' 'BX' 'BY' 'BZ' 'Ba' 'Bb' 'Bc' 'Bd' 'Be' 'Bf' 'Bg' 'Bh' 'Bi' 'Bj' 'Bk' 'Bl' 'Bm' 'Bn' 'Bo' 'Bp' 'Bq' 'Br' 'Bs' 'Bt' 'Bu' 'Bv' 'Bw' 'Bx' 'By' 'Bz' 'B0' 'B:' 'B9' 'B ' 'CA' 'CB' 'CC' 'CD' 'CE' 'CF' 'CG' 'CH' 'CI' 'CJ' 'CK' 'CL' 'CM' 'CN' 'CO' 'CP' 'CQ' 'CR' 'CS' 'CT' 'CU' 'CV' 'CW' 'CX' 'CY' 'CZ' 'Ca' 'Cb' 'Cc' 'Cd' 'Ce' 'Cf' 'Cg' 'Ch' 'Ci' 'Cj' 'Ck' 'Cl' 'Cm' 'Cn' 'Co' 'Cp' 'Cq' 'Cr' 'Cs' 'Ct' 'Cu' 'Cv' 'Cw' 'Cx' 'Cy' 'Cz' 'C0' 'C:' 'C9' 'C ' 'DA' 'DB' 'DC' 'DD' 'DE' 'DF' 'DG' 'DH' 'DI' 'DJ' 'DK' 'DL' 'DM' 'DN' 'DO' 'DP' 'DQ' 'DR' 'DS' 'DT' 'DU' 'DV' 'DW' 'DX' 'DY' 'DZ' 'Da' 'Db' 'Dc' 'Dd' 'De' 'Df' 'Dg' 'Dh' 'Di' 'Dj' 'Dk' 'Dl' 'Dm' 'Dn' 'Do' 'Dp' 'Dq' 'Dr' 'Ds' 'Dt' 'Du' 'Dv' 'Dw' 'Dx' 'Dy' 'Dz' 'D0' 'D:' 'D9' 'D ' 'EA' 'EB' 'EC' 'ED' 'EE' 'EF' 'EG' 'EH' 'EI' 'EJ' 'EK' 'EL' 'EM' 'EN' 'EO' 'EP' 'EQ' 'ER' 'ES' 'ET' 'EU' 'EV' 'EW' 'EX' 'EY' 'EZ' 'Ea' 'Eb' 'Ec' 'Ed' 'Ee' 'Ef' 'Eg' 'Eh' 'Ei' 'Ej' 'Ek' 'El' 'Em' 'En' 'Eo' 'Ep' 'Eq' 'Er' 'Es' 'Et' 'Eu' 'Ev' 'Ew' 'Ex' 'Ey' 'Ez' 'E0' 'E:' 'E9' 'E ' 'FA' 'FB' 'FC' 'FD' 'FE' 'FF' 'FG' 'FH' 'FI' 'FJ' 'FK' 'FL' 'FM' 'FN' 'FO' 'FP' 'FQ' 'FR' 'FS' 'FT' 'FU' 'FV' 'FW' 'FX' 'FY' 'FZ' 'Fa' 'Fb' 'Fc' 'Fd' 'Fe' 'Ff' 'Fg' 'Fh' 'Fi' 'Fj' 'Fk' 'Fl' 'Fm' 'Fn' 'Fo' 'Fp' 'Fq' 'Fr' 'Fs' 'Ft' 'Fu' 'Fv' 'Fw' 'Fx' 'Fy' 'Fz' 'F0' 'F:' 'F9' 'F ' 'GA' 'GB' 'GC' 'GD' 'GE' 'GF' 'GG' 'GH' 'GI' 'GJ' 'GK' 'GL' 'GM' 'GN' 'GO' 'GP' 'GQ' 'GR' 'GS' 'GT' 'GU' 'GV' 'GW' 'GX' 'GY' 'GZ' 'Ga' 'Gb' 'Gc' 'Gd' 'Ge' 'Gf' 'Gg' 'Gh' 'Gi' 'Gj' 'Gk' 'Gl' 'Gm' 'Gn' 'Go' 'Gp' 'Gq' 'Gr' 'Gs' 'Gt' 'Gu' 'Gv' 'Gw' 'Gx' 'Gy' 'Gz' 'G0' 'G:' 'G9' 'G ' 'HA' 'HB' 'HC' 'HD' 'HE' 'HF' 'HG' 'HH' 'HI' 'HJ' 'HK' 'HL' 'HM' 'HN' 'HO' 'HP' 'HQ' 'HR' 'HS' 'HT' 'HU' 'HV' 'HW' 'HX' 'HY' 'HZ' 'Ha' 'Hb' 'Hc' 'Hd' 'He' 'Hf' 'Hg' 'Hh' 'Hi' 'Hj' 'Hk' 'Hl' 'Hm' 'Hn' 'Ho' 'Hp' 'Hq' 'Hr' 'Hs' 'Ht' 'Hu' 'Hv' 'Hw' 'Hx' 'Hy' 'Hz' 'H0' 'H:' 'H9' 'H ' 'IA' 'IB' 'IC' 'ID' 'IE' 'IF' 'IG' 'IH' 'II' 'IJ' 'IK' 'IL' 'IM' 'IN' 'IO' 'IP' 'IQ' 'IR' 'IS' 'IT' 'IU' 'IV' 'IW' 'IX' 'IY' 'IZ' 'Ia' 'Ib' 'Ic' 'Id' 'Ie' 'If' 'Ig' 'Ih' 'Ii' 'Ij' 'Ik' 'Il' 'Im' 'In' 'Io' 'Ip' 'Iq' 'Ir' 'Is' 'It' 'Iu' 'Iv' 'Iw' 'Ix' 'Iy' 'Iz' 'I0' 'I:' 'I9' 'I ' 'JA' 'JB' 'JC' 'JD' 'JE' 'JF' 'JG' 'JH' 'JI' 'JJ' 'JK' 'JL' 'JM' 'JN' 'JO' 'JP' 'JQ' 'JR' 'JS' 'JT' 'JU' 'JV' 'JW' 'JX' 'JY' 'JZ' 'Ja' 'Jb' 'Jc' 'Jd' 'Je' 'Jf' 'Jg' 'Jh' 'Ji' 'Jj' 'Jk' 'Jl' 'Jm' 'Jn' 'Jo' 'Jp' 'Jq' 'Jr' 'Js' 'Jt' 'Ju' 'Jv' 'Jw' 'Jx' 'Jy' 'Jz' 'J0' 'J:' 'J9' 'J ' 'KA' 'KB' 'KC' 'KD' 'KE' 'KF' 'KG' 'KH' 'KI' 'KJ' 'KK' 'KL' 'KM' 'KN' 'KO' 'KP' 'KQ' 'KR' 'KS' 'KT' 'KU' 'KV' 'KW' 'KX' 'KY' 'KZ' 'Ka' 'Kb' 'Kc' 'Kd' 'Ke' 'Kf' 'Kg' 'Kh' 'Ki' 'Kj' 'Kk' 'Kl' 'Km' 'Kn' 'Ko' 'Kp' 'Kq' 'Kr' 'Ks' 'Kt' 'Ku' 'Kv' 'Kw' 'Kx' 'Ky' 'Kz' 'K0' 'K:' 'K9' 'K ' 'LA' 'LB' 'LC' 'LD' 'LE' 'LF' 'LG' 'LH' 'LI' 'LJ' 'LK' 'LL' 'LM' 'LN' 'LO' 'LP' 'LQ' 'LR' 'LS' 'LT' 'LU' 'LV' 'LW' 'LX' 'LY' 'LZ' 'La' 'Lb' 'Lc' 'Ld' 'Le' 'Lf' 'Lg' 'Lh' 'Li' 'Lj' 'Lk' 'Ll' 'Lm' 'Ln' 'Lo' 'Lp' 'Lq' 'Lr' 'Ls' 'Lt' 'Lu' 'Lv' 'Lw' 'Lx' 'Ly' 'Lz' 'L0' 'L:' 'L9' 'L ' 'MA' 'MB' 'MC' 'MD' 'ME' 'MF' 'MG' 'MH' 'MI' 'MJ' 'MK' 'ML' 'MM' 'MN' 'MO' 'MP' 'MQ' 'MR' 'MS' 'MT' 'MU' 'MV' 'MW' 'MX' 'MY' 'MZ' 'Ma' 'Mb' 'Mc' 'Md' 'Me' 'Mf' 'Mg' 'Mh' 'Mi' 'Mj' 'Mk' 'Ml' 'Mm' 'Mn' 'Mo' 'Mp' 'Mq' 'Mr' 'Ms' 'Mt' 'Mu' 'Mv' 'Mw' 'Mx' 'My' 'Mz' 'M0' 'M:' 'M9' 'M ' 'NA' 'NB' 'NC' 'ND' 'NE' 'NF' 'NG' 'NH' 'NI' 'NJ' 'NK' 'NL' 'NM' 'NN' 'NO' 'NP' 'NQ' 'NR' 'NS' 'NT' 'NU' 'NV' 'NW' 'NX' 'NY' 'NZ' 'Na' 'Nb' 'Nc' 'Nd' 'Ne' 'Nf' 'Ng' 'Nh' 'Ni' 'Nj' 'Nk' 'Nl' 'Nm' 'Nn' 'No' 'Np' 'Nq' 'Nr' 'Ns' 'Nt' 'Nu' 'Nv' 'Nw' 'Nx' 'Ny' 'Nz' 'N0' 'N:' 'N9' 'N ' 'OA' 'OB' 'OC' 'OD' 'OE' 'OF' 'OG' 'OH' 'OI' 'OJ' 'OK' 'OL' 'OM' 'ON' 'OO' 'OP' 'OQ' 'OR' 'OS' 'OT' 'OU' 'OV' 'OW' 'OX' 'OY' 'OZ' 'Oa' 'Ob' 'Oc' 'Od' 'Oe' 'Of' 'Og' 'Oh' 'Oi' 'Oj' 'Ok' 'Ol' 'Om' 'On' 'Oo' 'Op' 'Oq' 'Or' 'Os' 'Ot' 'Ou' 'Ov' 'Ow' 'Ox' 'Oy' 'Oz' 'O0' 'O:' 'O9' 'O ' 'PA' 'PB' 'PC' 'PD' 'PE' 'PF' 'PG' 'PH' 'PI' 'PJ' 'PK' 'PL' 'PM' 'PN' 'PO' 'PP' 'PQ' 'PR' 'PS' 'PT' 'PU' 'PV' 'PW' 'PX' 'PY' 'PZ' 'Pa' 'Pb' 'Pc' 'Pd' 'Pe' 'Pf' 'Pg' 'Ph' 'Pi' 'Pj' 'Pk' 'Pl' 'Pm' 'Pn' 'Po' 'Pp' 'Pq' 'Pr' 'Ps' 'Pt' 'Pu' 'Pv' 'Pw' 'Px' 'Py' 'Pz' 'P0' 'P:' 'P9' 'P ' 'QA' 'QB' 'QC' 'QD' 'QE' 'QF' 'QG' 'QH' 'QI' 'QJ' 'QK' 'QL' 'QM' 'QN' 'QO' 'QP' 'QQ' 'QR' 'QS' 'QT' 'QU' 'QV' 'QW' 'QX' 'QY' 'QZ' 'Qa' 'Qb' 'Qc' 'Qd' 'Qe' 'Qf' 'Qg' 'Qh' 'Qi' 'Qj' 'Qk' 'Ql' 'Qm' 'Qn' 'Qo' 'Qp' 'Qq' 'Qr' 'Qs' 'Qt' 'Qu' 'Qv' 'Qw' 'Qx' 'Qy' 'Qz' 'Q0' 'Q:' 'Q9' 'Q ' 'RA' 'RB' 'RC' 'RD' 'RE' 'RF' 'RG' 'RH' 'RI' 'RJ' 'RK' 'RL' 'RM' 'RN' 'RO' 'RP' 'RQ' 'RR' 'RS' 'RT' 'RU' 'RV' 'RW' 'RX' 'RY' 'RZ' 'Ra' 'Rb' 'Rc' 'Rd' 'Re' 'Rf' 'Rg' 'Rh' 'Ri' 'Rj' 'Rk' 'Rl' 'Rm' 'Rn' 'Ro' 'Rp' 'Rq' 'Rr' 'Rs' 'Rt' 'Ru' 'Rv' 'Rw' 'Rx' 'Ry' 'Rz' 'R0' 'R:' 'R9' 'R ' 'SA' 'SB' 'SC' 'SD' 'SE' 'SF' 'SG' 'SH' 'SI' 'SJ' 'SK' 'SL' 'SM' 'SN' 'SO' 'SP' 'SQ' 'SR' 'SS' 'ST' 'SU' 'SV' 'SW' 'SX' 'SY' 'SZ' 'Sa' 'Sb' 'Sc' 'Sd' 'Se' 'Sf' 'Sg' 'Sh' 'Si' 'Sj' 'Sk' 'Sl' 'Sm' 'Sn' 'So' 'Sp' 'Sq' 'Sr' 'Ss' 'St' 'Su' 'Sv' 'Sw' 'Sx' 'Sy' 'Sz' 'S0' 'S:' 'S9' 'S ' 'TA' 'TB' 'TC' 'TD' 'TE' 'TF' 'TG' 'TH' 'TI' 'TJ' 'TK' 'TL' 'TM' 'TN' 'TO' 'TP' 'TQ' 'TR' 'TS' 'TT' 'TU' 'TV' 'TW' 'TX' 'TY' 'TZ' 'Ta' 'Tb' 'Tc' 'Td' 'Te' 'Tf' 'Tg' 'Th' 'Ti' 'Tj' 'Tk' 'Tl' 'Tm' 'Tn' 'To' 'Tp' 'Tq' 'Tr' 'Ts' 'Tt' 'Tu' 'Tv' 'Tw' 'Tx' 'Ty' 'Tz' 'T0' 'T:' 'T9' 'T ' 'UA' 'UB' 'UC' 'UD' 'UE' 'UF' 'UG' 'UH' 'UI' 'UJ' 'UK' 'UL' 'UM' 'UN' 'UO' 'UP' 'UQ' 'UR' 'US' 'UT' 'UU' 'UV' 'UW' 'UX' 'UY' 'UZ' 'Ua' 'Ub' 'Uc' 'Ud' 'Ue' 'Uf' 'Ug' 'Uh' 'Ui' 'Uj' 'Uk' 'Ul' 'Um' 'Un' 'Uo' 'Up' 'Uq' 'Ur' 'Us' 'Ut' 'Uu' 'Uv' 'Uw' 'Ux' 'Uy' 'Uz' 'U0' 'U:' 'U9' 'U ' 'VA' 'VB' 'VC' 'VD' 'VE' 'VF' 'VG' 'VH' 'VI' 'VJ' 'VK' 'VL' 'VM' 'VN' 'VO' 'VP' 'VQ' 'VR' 'VS' 'VT' 'VU' 'VV' 'VW' 'VX' 'VY' 'VZ' 'Va' 'Vb' 'Vc' 'Vd' 'Ve' 'Vf' 'Vg' 'Vh' 'Vi' 'Vj' 'Vk' 'Vl' 'Vm' 'Vn' 'Vo' 'Vp' 'Vq' 'Vr' 'Vs' 'Vt' 'Vu' 'Vv' 'Vw' 'Vx' 'Vy' 'Vz' 'V0' 'V:' 'V9' 'V ' 'WA' 'WB' 'WC' 'WD' 'WE' 'WF' 'WG' 'WH' 'WI' 'WJ' 'WK' 'WL' 'WM' 'WN' 'WO' 'WP' 'WQ' 'WR' 'WS' 'WT' 'WU' 'WV' 'WW' 'WX' 'WY' 'WZ' 'Wa' 'Wb' 'Wc' 'Wd' 'We' 'Wf' 'Wg' 'Wh' 'Wi' 'Wj' 'Wk' 'Wl' 'Wm' 'Wn' 'Wo' 'Wp' 'Wq' 'Wr' 'Ws' 'Wt' 'Wu' 'Wv' 'Ww' 'Wx' 'Wy' 'Wz' 'W0' 'W:' 'W9' 'W ' 'XA' 'XB' 'XC' 'XD' 'XE' 'XF' 'XG' 'XH' 'XI' 'XJ' 'XK' 'XL' 'XM' 'XN' 'XO' 'XP' 'XQ' 'XR' 'XS' 'XT' 'XU' 'XV' 'XW' 'XX' 'XY' 'XZ' 'Xa' 'Xb' 'Xc' 'Xd' 'Xe' 'Xf' 'Xg' 'Xh' 'Xi' 'Xj' 'Xk' 'Xl' 'Xm' 'Xn' 'Xo' 'Xp' 'Xq' 'Xr' 'Xs' 'Xt' 'Xu' 'Xv' 'Xw' 'Xx' 'Xy' 'Xz' 'X0' 'X:' 'X9' 'X ' 'YA' 'YB' 'YC' 'YD' 'YE' 'YF' 'YG' 'YH' 'YI' 'YJ' 'YK' 'YL' 'YM' 'YN' 'YO' 'YP' 'YQ' 'YR' 'YS' 'YT' 'YU' 'YV' 'YW' 'YX' 'YY' 'YZ' 'Ya' 'Yb' 'Yc' 'Yd' 'Ye' 'Yf' 'Yg' 'Yh' 'Yi' 'Yj' 'Yk' 'Yl' 'Ym' 'Yn' 'Yo' 'Yp' 'Yq' 'Yr' 'Ys' 'Yt' 'Yu' 'Yv' 'Yw' 'Yx' 'Yy' 'Yz' 'Y0' 'Y:' 'Y9' 'Y ' 'ZA' 'ZB' 'ZC' 'ZD' 'ZE' 'ZF' 'ZG' 'ZH' 'ZI' 'ZJ' 'ZK' 'ZL' 'ZM' 'ZN' 'ZO' 'ZP' 'ZQ' 'ZR' 'ZS' 'ZT' 'ZU' 'ZV' 'ZW' 'ZX' 'ZY' 'ZZ' 'Za' 'Zb' 'Zc' 'Zd' 'Ze' 'Zf' 'Zg' 'Zh' 'Zi' 'Zj' 'Zk' 'Zl' 'Zm' 'Zn' 'Zo' 'Zp' 'Zq' 'Zr' 'Zs' 'Zt' 'Zu' 'Zv' 'Zw' 'Zx' 'Zy' 'Zz' 'Z0' 'Z:' 'Z9' 'Z ' 'aA' 'aB' 'aC' 'aD' 'aE' 'aF' 'aG' 'aH' 'aI' 'aJ' 'aK' 'aL' 'aM' 'aN' 'aO' 'aP' 'aQ' 'aR' 'aS' 'aT' 'aU' 'aV' 'aW' 'aX' 'aY' 'aZ' 'aa' 'ab' 'ac' 'ad' 'ae' 'af' 'ag' 'ah' 'ai' 'aj' 'ak' 'al' 'am' 'an' 'ao' 'ap' 'aq' 'ar' 'as' 'at' 'au' 'av' 'aw' 'ax' 'ay' 'az' 'a0' 'a:' 'a9' 'a ' 'bA' 'bB' 'bC' 'bD' 'bE' 'bF' 'bG' 'bH' 'bI' 'bJ' 'bK' 'bL' 'bM' 'bN' 'bO' 'bP' 'bQ' 'bR' 'bS' 'bT' 'bU' 'bV' 'bW' 'bX' 'bY' 'bZ' 'ba' 'bb' 'bc' 'bd' 'be' 'bf' 'bg' 'bh' 'bi' 'bj' 'bk' 'bl' 'bm' 'bn' 'bo' 'bp' 'bq' 'br' 'bs' 'bt' 'bu' 'bv' 'bw' 'bx' 'by' 'bz' 'b0' 'b:' 'b9' 'b ' 'cA' 'cB' 'cC' 'cD' 'cE' 'cF' 'cG' 'cH' 'cI' 'cJ' 'cK' 'cL' 'cM' 'cN' 'cO' 'cP' 'cQ' 'cR' 'cS' 'cT' 'cU' 'cV' 'cW' 'cX' 'cY' 'cZ' 'ca' 'cb' 'cc' 'cd' 'ce' 'cf' 'cg' 'ch' 'ci' 'cj' 'ck' 'cl' 'cm' 'cn' 'co' 'cp' 'cq' 'cr' 'cs' 'ct' 'cu' 'cv' 'cw' 'cx' 'cy' 'cz' 'c0' 'c:' 'c9' 'c ' 'dA' 'dB' 'dC' 'dD' 'dE' 'dF' 'dG' 'dH' 'dI' 'dJ' 'dK' 'dL' 'dM' 'dN' 'dO' 'dP' 'dQ' 'dR' 'dS' 'dT' 'dU' 'dV' 'dW' 'dX' 'dY' 'dZ' 'da' 'db' 'dc' 'dd' 'de' 'df' 'dg' 'dh' 'di' 'dj' 'dk' 'dl' 'dm' 'dn' 'do' 'dp' 'dq' 'dr' 'ds' 'dt' 'du' 'dv' 'dw' 'dx' 'dy' 'dz' 'd0' 'd:' 'd9' 'd ' 'eA' 'eB' 'eC' 'eD' 'eE' 'eF' 'eG' 'eH' 'eI' 'eJ' 'eK' 'eL' 'eM' 'eN' 'eO' 'eP' 'eQ' 'eR' 'eS' 'eT' 'eU' 'eV' 'eW' 'eX' 'eY' 'eZ' 'ea' 'eb' 'ec' 'ed' 'ee' 'ef' 'eg' 'eh' 'ei' 'ej' 'ek' 'el' 'em' 'en' 'eo' 'ep' 'eq' 'er' 'es' 'et' 'eu' 'ev' 'ew' 'ex' 'ey' 'ez' 'e0' 'e:' 'e9' 'e ' 'fA' 'fB' 'fC' 'fD' 'fE' 'fF' 'fG' 'fH' 'fI' 'fJ' 'fK' 'fL' 'fM' 'fN' 'fO' 'fP' 'fQ' 'fR' 'fS' 'fT' 'fU' 'fV' 'fW' 'fX' 'fY' 'fZ' 'fa' 'fb' 'fc' 'fd' 'fe' 'ff' 'fg' 'fh' 'fi' 'fj' 'fk' 'fl' 'fm' 'fn' 'fo' 'fp' 'fq' 'fr' 'fs' 'ft' 'fu' 'fv' 'fw' 'fx' 'fy' 'fz' 'f0' 'f:' 'f9' 'f ' 'gA' 'gB' 'gC' 'gD' 'gE' 'gF' 'gG' 'gH' 'gI' 'gJ' 'gK' 'gL' 'gM' 'gN' 'gO' 'gP' 'gQ' 'gR' 'gS' 'gT' 'gU' 'gV' 'gW' 'gX' 'gY' 'gZ' 'ga' 'gb' 'gc' 'gd' 'ge' 'gf' 'gg' 'gh' 'gi' 'gj' 'gk' 'gl' 'gm' 'gn' 'go' 'gp' 'gq' 'gr' 'gs' 'gt' 'gu' 'gv' 'gw' 'gx' 'gy' 'gz' 'g0' 'g:' 'g9' 'g ' 'hA' 'hB' 'hC' 'hD' 'hE' 'hF' 'hG' 'hH' 'hI' 'hJ' 'hK' 'hL' 'hM' 'hN' 'hO' 'hP' 'hQ' 'hR' 'hS' 'hT' 'hU' 'hV' 'hW' 'hX' 'hY' 'hZ' 'ha' 'hb' 'hc' 'hd' 'he' 'hf' 'hg' 'hh' 'hi' 'hj' 'hk' 'hl' 'hm' 'hn' 'ho' 'hp' 'hq' 'hr' 'hs' 'ht' 'hu' 'hv' 'hw' 'hx' 'hy' 'hz' 'h0' 'h:' 'h9' 'h ' 'iA' 'iB' 'iC' 'iD' 'iE' 'iF' 'iG' 'iH' 'iI' 'iJ' 'iK' 'iL' 'iM' 'iN' 'iO' 'iP' 'iQ' 'iR' 'iS' 'iT' 'iU' 'iV' 'iW' 'iX' 'iY' 'iZ' 'ia' 'ib' 'ic' 'id' 'ie' 'if' 'ig' 'ih' 'ii' 'ij' 'ik' 'il' 'im' 'in' 'io' 'ip' 'iq' 'ir' 'is' 'it' 'iu' 'iv' 'iw' 'ix' 'iy' 'iz' 'i0' 'i:' 'i9' 'i ' 'jA' 'jB' 'jC' 'jD' 'jE' 'jF' 'jG' 'jH' 'jI' 'jJ' 'jK' 'jL' 'jM' 'jN' 'jO' 'jP' 'jQ' 'jR' 'jS' 'jT' 'jU' 'jV' 'jW' 'jX' 'jY' 'jZ' 'ja' 'jb' 'jc' 'jd' 'je' 'jf' 'jg' 'jh' 'ji' 'jj' 'jk' 'jl' 'jm' 'jn' 'jo' 'jp' 'jq' 'jr' 'js' 'jt' 'ju' 'jv' 'jw' 'jx' 'jy' 'jz' 'j0' 'j:' 'j9' 'j ' 'kA' 'kB' 'kC' 'kD' 'kE' 'kF' 'kG' 'kH' 'kI' 'kJ' 'kK' 'kL' 'kM' 'kN' 'kO' 'kP' 'kQ' 'kR' 'kS' 'kT' 'kU' 'kV' 'kW' 'kX' 'kY' 'kZ' 'ka' 'kb' 'kc' 'kd' 'ke' 'kf' 'kg' 'kh' 'ki' 'kj' 'kk' 'kl' 'km' 'kn' 'ko' 'kp' 'kq' 'kr' 'ks' 'kt' 'ku' 'kv' 'kw' 'kx' 'ky' 'kz' 'k0' 'k:' 'k9' 'k ' 'lA' 'lB' 'lC' 'lD' 'lE' 'lF' 'lG' 'lH' 'lI' 'lJ' 'lK' 'lL' 'lM' 'lN' 'lO' 'lP' 'lQ' 'lR' 'lS' 'lT' 'lU' 'lV' 'lW' 'lX' 'lY' 'lZ' 'la' 'lb' 'lc' 'ld' 'le' 'lf' 'lg' 'lh' 'li' 'lj' 'lk' 'll' 'lm' 'ln' 'lo' 'lp' 'lq' 'lr' 'ls' 'lt' 'lu' 'lv' 'lw' 'lx' 'ly' 'lz' 'l0' 'l:' 'l9' 'l ' 'mA' 'mB' 'mC' 'mD' 'mE' 'mF' 'mG' 'mH' 'mI' 'mJ' 'mK' 'mL' 'mM' 'mN' 'mO' 'mP' 'mQ' 'mR' 'mS' 'mT' 'mU' 'mV' 'mW' 'mX' 'mY' 'mZ' 'ma' 'mb' 'mc' 'md' 'me' 'mf' 'mg' 'mh' 'mi' 'mj' 'mk' 'ml' 'mm' 'mn' 'mo' 'mp' 'mq' 'mr' 'ms' 'mt' 'mu' 'mv' 'mw' 'mx' 'my' 'mz' 'm0' 'm:' 'm9' 'm ' 'nA' 'nB' 'nC' 'nD' 'nE' 'nF' 'nG' 'nH' 'nI' 'nJ' 'nK' 'nL' 'nM' 'nN' 'nO' 'nP' 'nQ' 'nR' 'nS' 'nT' 'nU' 'nV' 'nW' 'nX' 'nY' 'nZ' 'na' 'nb' 'nc' 'nd' 'ne' 'nf' 'ng' 'nh' 'ni' 'nj' 'nk' 'nl' 'nm' 'nn' 'no' 'np' 'nq' 'nr' 'ns' 'nt' 'nu' 'nv' 'nw' 'nx' 'ny' 'nz' 'n0' 'n:' 'n9' 'n ' 'oA' 'oB' 'oC' 'oD' 'oE' 'oF' 'oG' 'oH' 'oI' 'oJ' 'oK' 'oL' 'oM' 'oN' 'oO' 'oP' 'oQ' 'oR' 'oS' 'oT' 'oU' 'oV' 'oW' 'oX' 'oY' 'oZ' 'oa' 'ob' 'oc' 'od' 'oe' 'of' 'og' 'oh' 'oi' 'oj' 'ok' 'ol' 'om' 'on' 'oo' 'op' 'oq' 'or' 'os' 'ot' 'ou' 'ov' 'ow' 'ox' 'oy' 'oz' 'o0' 'o:' 'o9' 'o ' 'pA' 'pB' 'pC' 'pD' 'pE' 'pF' 'pG' 'pH' 'pI' 'pJ' 'pK' 'pL' 'pM' 'pN' 'pO' 'pP' 'pQ' 'pR' 'pS' 'pT' 'pU' 'pV' 'pW' 'pX' 'pY' 'pZ' 'pa' 'pb' 'pc' 'pd' 'pe' 'pf' 'pg' 'ph' 'pi' 'pj' 'pk' 'pl' 'pm' 'pn' 'po' 'pp' 'pq' 'pr' 'ps' 'pt' 'pu' 'pv' 'pw' 'px' 'py' 'pz' 'p0' 'p:' 'p9' 'p ' 'qA' 'qB' 'qC' 'qD' 'qE' 'qF' 'qG' 'qH' 'qI' 'qJ' 'qK' 'qL' 'qM' 'qN' 'qO' 'qP' 'qQ' 'qR' 'qS' 'qT' 'qU' 'qV' 'qW' 'qX' 'qY' 'qZ' 'qa' 'qb' 'qc' 'qd' 'qe' 'qf' 'qg' 'qh' 'qi' 'qj' 'qk' 'ql' 'qm' 'qn' 'qo' 'qp' 'qq' 'qr' 'qs' 'qt' 'qu' 'qv' 'qw' 'qx' 'qy' 'qz' 'q0' 'q:' 'q9' 'q ' 'rA' 'rB' 'rC' 'rD' 'rE' 'rF' 'rG' 'rH' 'rI' 'rJ' 'rK' 'rL' 'rM' 'rN' 'rO' 'rP' 'rQ' 'rR' 'rS' 'rT' 'rU' 'rV' 'rW' 'rX' 'rY' 'rZ' 'ra' 'rb' 'rc' 'rd' 're' 'rf' 'rg' 'rh' 'ri' 'rj' 'rk' 'rl' 'rm' 'rn' 'ro' 'rp' 'rq' 'rr' 'rs' 'rt' 'ru' 'rv' 'rw' 'rx' 'ry' 'rz' 'r0' 'r:' 'r9' 'r ' 'sA' 'sB' 'sC' 'sD' 'sE' 'sF' 'sG' 'sH' 'sI' 'sJ' 'sK' 'sL' 'sM' 'sN' 'sO' 'sP' 'sQ' 'sR' 'sS' 'sT' 'sU' 'sV' 'sW' 'sX' 'sY' 'sZ' 'sa' 'sb' 'sc' 'sd' 'se' 'sf' 'sg' 'sh' 'si' 'sj' 'sk' 'sl' 'sm' 'sn' 'so' 'sp' 'sq' 'sr' 'ss' 'st' 'su' 'sv' 'sw' 'sx' 'sy' 'sz' 's0' 's:' 's9' 's ' 'tA' 'tB' 'tC' 'tD' 'tE' 'tF' 'tG' 'tH' 'tI' 'tJ' 'tK' 'tL' 'tM' 'tN' 'tO' 'tP' 'tQ' 'tR' 'tS' 'tT' 'tU' 'tV' 'tW' 'tX' 'tY' 'tZ' 'ta' 'tb' 'tc' 'td' 'te' 'tf' 'tg' 'th' 'ti' 'tj' 'tk' 'tl' 'tm' 'tn' 'to' 'tp' 'tq' 'tr' 'ts' 'tt' 'tu' 'tv' 'tw' 'tx' 'ty' 'tz' 't0' 't:' 't9' 't ' 'uA' 'uB' 'uC' 'uD' 'uE' 'uF' 'uG' 'uH' 'uI' 'uJ' 'uK' 'uL' 'uM' 'uN' 'uO' 'uP' 'uQ' 'uR' 'uS' 'uT' 'uU' 'uV' 'uW' 'uX' 'uY' 'uZ' 'ua' 'ub' 'uc' 'ud' 'ue' 'uf' 'ug' 'uh' 'ui' 'uj' 'uk' 'ul' 'um' 'un' 'uo' 'up' 'uq' 'ur' 'us' 'ut' 'uu' 'uv' 'uw' 'ux' 'uy' 'uz' 'u0' 'u:' 'u9' 'u ' 'vA' 'vB' 'vC' 'vD' 'vE' 'vF' 'vG' 'vH' 'vI' 'vJ' 'vK' 'vL' 'vM' 'vN' 'vO' 'vP' 'vQ' 'vR' 'vS' 'vT' 'vU' 'vV' 'vW' 'vX' 'vY' 'vZ' 'va' 'vb' 'vc' 'vd' 've' 'vf' 'vg' 'vh' 'vi' 'vj' 'vk' 'vl' 'vm' 'vn' 'vo' 'vp' 'vq' 'vr' 'vs' 'vt' 'vu' 'vv' 'vw' 'vx' 'vy' 'vz' 'v0' 'v:' 'v9' 'v ' 'wA' 'wB' 'wC' 'wD' 'wE' 'wF' 'wG' 'wH' 'wI' 'wJ' 'wK' 'wL' 'wM' 'wN' 'wO' 'wP' 'wQ' 'wR' 'wS' 'wT' 'wU' 'wV' 'wW' 'wX' 'wY' 'wZ' 'wa' 'wb' 'wc' 'wd' 'we' 'wf' 'wg' 'wh' 'wi' 'wj' 'wk' 'wl' 'wm' 'wn' 'wo' 'wp' 'wq' 'wr' 'ws' 'wt' 'wu' 'wv' 'ww' 'wx' 'wy' 'wz' 'w0' 'w:' 'w9' 'w ' 'xA' 'xB' 'xC' 'xD' 'xE' 'xF' 'xG' 'xH' 'xI' 'xJ' 'xK' 'xL' 'xM' 'xN' 'xO' 'xP' 'xQ' 'xR' 'xS' 'xT' 'xU' 'xV' 'xW' 'xX' 'xY' 'xZ' 'xa' 'xb' 'xc' 'xd' 'xe' 'xf' 'xg' 'xh' 'xi' 'xj' 'xk' 'xl' 'xm' 'xn' 'xo' 'xp' 'xq' 'xr' 'xs' 'xt' 'xu' 'xv' 'xw' 'xx' 'xy' 'xz' 'x0' 'x:' 'x9' 'x ' 'yA' 'yB' 'yC' 'yD' 'yE' 'yF' 'yG' 'yH' 'yI' 'yJ' 'yK' 'yL' 'yM' 'yN' 'yO' 'yP' 'yQ' 'yR' 'yS' 'yT' 'yU' 'yV' 'yW' 'yX' 'yY' 'yZ' 'ya' 'yb' 'yc' 'yd' 'ye' 'yf' 'yg' 'yh' 'yi' 'yj' 'yk' 'yl' 'ym' 'yn' 'yo' 'yp' 'yq' 'yr' 'ys' 'yt' 'yu' 'yv' 'yw' 'yx' 'yy' 'yz' 'y0' 'y:' 'y9' 'y ' 'zA' 'zB' 'zC' 'zD' 'zE' 'zF' 'zG' 'zH' 'zI' 'zJ' 'zK' 'zL' 'zM' 'zN' 'zO' 'zP' 'zQ' 'zR' 'zS' 'zT' 'zU' 'zV' 'zW' 'zX' 'zY' 'zZ' 'za' 'zb' 'zc' 'zd' 'ze' 'zf' 'zg' 'zh' 'zi' 'zj' 'zk' 'zl' 'zm' 'zn' 'zo' 'zp' 'zq' 'zr' 'zs' 'zt' 'zu' 'zv' 'zw' 'zx' 'zy' 'zz' 'z0' 'z:' 'z9' 'z ' '0A' '0B' '0C' '0D' '0E' '0F' '0G' '0H' '0I' '0J' '0K' '0L' '0M' '0N' '0O' '0P' '0Q' '0R' '0S' '0T' '0U' '0V' '0W' '0X' '0Y' '0Z' '0a' '0b' '0c' '0d' '0e' '0f' '0g' '0h' '0i' '0j' '0k' '0l' '0m' '0n' '0o' '0p' '0q' '0r' '0s' '0t' '0u' '0v' '0w' '0x' '0y' '0z' '00' '0:' '09' '0 ' ':A' ':B' ':C' ':D' ':E' ':F' ':G' ':H' ':I' ':J' ':K' ':L' ':M' ':N' ':O' ':P' ':Q' ':R' ':S' ':T' ':U' ':V' ':W' ':X' ':Y' ':Z' ':a' ':b' ':c' ':d' ':e' ':f' ':g' ':h' ':i' ':j' ':k' ':l' ':m' ':n' ':o' ':p' ':q' ':r' ':s' ':t' ':u' ':v' ':w' ':x' ':y' ':z' ':0' '::' ':9' ': ' '9A' '9B' '9C' '9D' '9E' '9F' '9G' '9H' '9I' '9J' '9K' '9L' '9M' '9N' '9O' '9P' '9Q' '9R' '9S' '9T' '9U' '9V' '9W' '9X' '9Y' '9Z' '9a' '9b' '9c' '9d' '9e' '9f' '9g' '9h' '9i' '9j' '9k' '9l' '9m' '9n' '9o' '9p' '9q' '9r' '9s' '9t' '9u' '9v' '9w' '9x' '9y' '9z' '90' '9:' '99' '9 ' ' A' ' B' ' C' ' D' ' E' ' F' ' G' ' H' ' I' ' J' ' K' ' L' ' M' ' N' ' O' ' P' ' Q' ' R' ' S' ' T' ' U' ' V' ' W' ' X' ' Y' ' Z' ' a' ' b' ' c' ' d' ' e' ' f' ' g' ' h' ' i' ' j' ' k' ' l' ' m' ' n' ' o' ' p' ' q' ' r' ' s' ' t' ' u' ' v' ' w' ' x' ' y' ' z' ' 0' ' :' ' 9' ' '
So there are 3136 possible 2 character combinations from that set. Now think of the two sequences: 'ABC123' and the sequence '3ABC12'. They have exactly the same set of characters, but in a slightly different sequence, since the 3 is in a different place.
We can use the above set of 2 character sequences to compute the distance between a pair of strings. For example, comare 'ABC123' to 'B1A3C2'. Again, the same numbers and letters, but in a very different sequence here. The previous pair would be seen to have a much smaller distance. I'd suggest a simple scheme. Look at the pairs of consecutive elements of each sequence, and count the num,ber of times a pair is seen in BOTH sequences, so look for overlap of two character sub-sequences. That is, we have these three sequences:
'ABC123' ~ {'AB', 'BC', 'C1', '12', '23'}
'3ABC12' ~ {'3A', 'AB', 'BC', 'C1', '12'}
'B1A3C2' ~ {'B1', '1A', 'A3', '3C', 'C2'}
I've broken them each into 2 digit subsquences. See that 'AB' occurs in BOTH sequences 1 and 2. Similarly, 'BC' also appears in both cases. In fact, 4 of those 5 sequences of 2 characters appear in BOTH sequences 1 and 2. Compare that instead to sequences 1 and 3. There we see NO 2 character subsequences that are the same. So we could define a distance between two sequences in terms of the number of 2 character subsequences they have in common.
You should see this uses the order of characters as an important factor. It would be quite doable, and give you a simple measure of distance. You could add more information into such a measure, but this would gve you a start.

Kategorien

Mehr zu Cell Arrays finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by