Mer konkret har jeg en lister over eksempelvis brus, en liste er en liste med forkortelser, mens en annen liste er fullt navn. Eksempelvis
Kode: Velg alt
'cola'
'flote'
'blå'
'grønn'
'orange'
'rød'
'gren'
'sprite'
'chili'
'hel'
'melk'
'vann'
Kode: Velg alt
'Coca Cola'
'Fløte'
'Gele Blå'
'Gele Grønn'
'Gele Orange'
'Gele Rød'
'Röses Grenadine'
'Sprite'
'Tabasco'
'Tine Helmelk'
'Tine Melk'
'VATN'
Kode: Velg alt
A = Finn('Fløte,Vann,chilli',Liste1, Liste2)
A = [ 2 12 9 ]
Samtidig ønker jeg og å få ut en liste med alt jeg ikke fant.
Jeg har selv skrevet en kode som fungerer en den smerter sjelen min bare jeg tenker på koden.
I korte trekk sjekker jeg om input er av riktig format, og hvor mange lister som tas inn. Her godtar jeg bare 1 eller 2. Så formaterer jeg listene, fjerner mellomrom, store små bokstaver osv. Så tester jeg om strengene er like via ismember funksjonen.
De strengene den ikke fant i første liste, testes i neste liste.
Strenger som failer på begge disse blir sendt inn i en annnen funksjon som sjekker om strengene er innenfor et tegn fra en streng i liste1 eller 2. Det jeg frykter er at alle disse sjekkene gjør koden treg. Og det ville vært raskere å bare søke gjennom strengene og fjærne dobbelgjengere etterpå. Krever det mye ressurer av matlab å fjærne rader fra lister, sammenliknet med å søke gjennom alle sammen?
http://pastebin.com/u36UzXM3
Og hva er raskest av ismember og scrmpi for korte lister av strenger ?
Bruker jeg sistnevnte må jeg jo loope igjennom alle elementene jeg vil søkge etter.