J'essaie de résoudre le problème suivant, et je dois le faire aussi efficacement que possible (c'est-à-dire en essayant d'éviter les boucles autant que possible). J'ai deux matrices de cellules, à savoir A et B. Chaque cellule de A et B contient une chaîne de caractères. La longueur de ces chaînes de caractères est variable. Disons que:MATLAB: mots correspondant entre les tableaux de cellules de chaînes
A={‘life is wonderful’, ‘matlab makes your dreams come true’};
B={‘life would be meaningless without wonderful matlab’, ‘what a wonderful world’, ‘the shoemaker makes shoes’, ‘rock and roll baby’};
De plus, le nombre d'éléments de réseau de cellules B est d'environ trois ordres de grandeur plus grande que celle du réseau de cellules A.
Mon but est de trouver combien de mots de chaque chaîne char dans a apparaissent également dans toutes les chaînes de caractères de B.
Pour l'exemple précédent, un résultat convenable pourrait être quelque chose comme:
match = [2 1 0 0
1 0 1 0]
la première ligne indique h ow beaucoup de mots dans la première chaîne char de A apparaissent dans les quatre chaînes de caractères de B. Et la deuxième rangée, la même chose pour la deuxième chaîne de caractères de A.
La mise en œuvre de la double boucle est simple, mais très longue surtout en raison de la longueur du réseau de cellules B (plus de 3 millions de cellules).
Des idées? Merci beaucoup.
Xavier
L'avez-vous chronométré contre la solution @ Amro? – Jonas
il semble que les horloges à peu près le même, même avec un jeu de données plus volumineux – Batsu