假设我有两个小的(A)和非常大的字符串(B)。我想在 B 中找到 A 的匹配字符串,但我对精确匹配不感兴趣。换句话说,我想考虑一个阈值来找到匹配字符串。因此,在这种情况下,我接受 A 的 2-3 个元素与 B 中选定的字符串不完全匹配的字符串。所以,我的问题是我如何在 matlab 中考虑这种近似?因为,据我所知,matlab 中的大多数字符串匹配代码只是找到完全匹配的。
此外,我希望它产生一堆字符串而不是一个匹配。例如,它应该提供 10 个与 A 匹配的字符串,例如 2-3 不匹配。
假设我有两个小的(A)和非常大的字符串(B)。我想在 B 中找到 A 的匹配字符串,但我对精确匹配不感兴趣。换句话说,我想考虑一个阈值来找到匹配字符串。因此,在这种情况下,我接受 A 的 2-3 个元素与 B 中选定的字符串不完全匹配的字符串。所以,我的问题是我如何在 matlab 中考虑这种近似?因为,据我所知,matlab 中的大多数字符串匹配代码只是找到完全匹配的。
此外,我希望它产生一堆字符串而不是一个匹配。例如,它应该提供 10 个与 A 匹配的字符串,例如 2-3 不匹配。
这听起来像是您想要的 Smith-Waterman ( http://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm ) 算法,该算法在生物信息学工具箱中实现。
如果这不完全符合您的要求,您可能会通过使用 Levenshtein 距离将 A 与 B 的子串进行比较来编写自己的匹配例程,效率可能会有些低。Matlab Central 上有几个用于 Levenshtein 距离的包(例如,https ://www.mathworks.com/matlabcentral/fileexchange/17585-calculation-of-distance-between-strings )。