8
votes

Bibliothèque de type REGEXP pour la recherche de modèle Matrix

Y a-t-il une bibliothèque (dans n'importe quelle langue) pouvant rechercher des modèles dans des matrices telles que les expressions régulières fonctionnent pour les chaînes? Quelque chose comme des expresions régulières pour les matrices ou toute méthode de recherche de modèle Matrix?


5 commentaires

Vous voulez dire comme si la matrice est la matrice d'identité / matrice carrée, etc.?


Non, je veux dire si une matrice est une subatrix dans une autre matrice ou si une forme est trouvée dans une matrice


Quel genre de matrice? Point flottant? Cette matrice est-elle par hasard une image? Est un match approximatif ok?


Je cherche une correspondance exacte, est une matrice rectangulaire entière


Associé Stackoverflow.com/Questtions/615729/...


4 Réponses :


0
votes

J'ai trouvé deux choses: GAWK et A Perl script.

C'est un problème différent, car String Expressions régulières fonctionne (par exemple, SED , grep ) fonctionne ligne-by-ligne sur des cordes unidimensionnelles.

Sauf si vos matrices sont unidimensionnelles (essentiellement des vecteurs), ces programmes et les algorithmes qu'elles utilisent ne fonctionneront pas.

bonne chance!


0 commentaires

0
votes

Il suffit de rechercher des rangées du motif dans chaque ligne de la matrice d'entrée à l'aide de Aho-Corasick (Time O (taille matricielle)). Le résultat devrait être suffisamment petit pour le rejoindre rapidement dans le résultat final.


0 commentaires

1
votes

Si vous n'êtes pas opposé à l'utilisation de J, vous pouvez déterminer si deux matrices sont égales à l'aide de l'opérateur -: code> (correspondant). Par exemple:

 X =: 2 2 $ 1 2 4 5  
   X
1 2
4 5
   Y =: 4 3 $ (1+i.12)
   Y
 1  2  3
 4  5  6
 7  8  9
10 11 12
   X E. Y
1 0 0
0 0 0
0 0 0
0 0 0


0 commentaires

0
votes

Je ne pense pas qu'il existe quelque chose de tout à fait comme des expressions régulières pour les dimensions supérieures à 1, mais si vous souhaitez correspondre à un modèle exact au lieu d'une classe de motifs, je pourrais vous suggérer que vous lisez la convolution (ou plutôt corrélation croisée )

La raison étant, il existe de nombreuses fonctions de bibliothèque hautement optimisées (p. Ex. IPP) pour le faire plus rapidement que vous ne pourriez jamais espérer réaliser par vous-même. Aussi cette méthode échoue également à des dimensions plus élevées.

En outre, cela ne vous donnera pas nécessairement une "correspondance", mais plutôt un "pic" dans une carte de corrélation qui correspondra à la correspondance si ce pic est égal à la somme des coefficients carrés du motif que vous recherchez. Pour.


0 commentaires