string match and replace string with matching number from another matrix

4 views (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)

Categories

Find more on Characters and Strings in Help Center and File Exchange

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!