string match and replace string with matching number from another matrix

1 view (last 30 days)
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

Accepted Answer

Paul
Paul on 27 Nov 2023
Edited: Paul on 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]}

More Answers (0)

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!