string match and replace string with matching number from another matrix

Hi All,
I'm stuck. I have a file called StimNo.mat that contains the filenames of over 2000 soundfiles (e.g. 'air.wav', 'air_2.wav', 'chair.wav' etc) in the first column. The second column has the associated number (e.g. 1, 2, 3 etc).
I have another file like it with a small subset of the .wav names. I'd like to replace the names of the .wav file with the number from Column 2 in StimNo.mat. How might I do that please? The .wav files are not consistently labeled so need to match the full string.
Kind regards
Phil

 Akzeptierte Antwort

Paul
Paul am 27 Nov. 2023
Bearbeitet: Paul am 27 Nov. 2023
From the desription, it sounds like the StimNo file contains a cell array (assuming all file names are unique)
stimno = {'air.wav' 1;'air2.wav' 2;'chair.wav' 3;'chair2.wav' 4}
stimno = 4×2 cell array
{'air.wav' } {[1]} {'air2.wav' } {[2]} {'chair.wav' } {[3]} {'chair2.wav'} {[4]}
and the second file is something like
secondfile ={'chair2.wav'; 'air2.wav'}
secondfile = 2×1 cell array
{'chair2.wav'} {'air2.wav' }
And the result would be
[~,locb] = ismember(secondfile,stimno(:,1));
locb
locb = 2×1
4 2
result = stimno(locb,2)
result = 2×1 cell array
{[4]} {[2]}

1 Kommentar

OH...ismember!! (I was messing around with strcmp etc.) Thank you very much!!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Produkte

Version

R2023b

Gefragt:

am 27 Nov. 2023

Kommentiert:

am 27 Nov. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by