Help looping through mat files with sound function

5 vues (au cours des 30 derniers jours)
Daulton_Benesuave
Daulton_Benesuave le 1 Jan 2016
Commenté : Walter Roberson le 29 Jan 2016
I have several *.mat sound files (e.g., tunes_audio.mat) that I have load into my Matlab workspace using the following code:
s = what;
matfiles=s.mat;
for a=1:numel(matfiles)
load(char(matfiles(a)))
end
I would now like to play each of these files using the sound function. Simply typing sound(tunes_audio) works just fine. But I want to loop through all the loaded files and play them one at a time without having to type each name into the script. I have tried sound(char(matfiles{1}(1:end-4))) but I get an error message saying "Audio data must be real and floating point." Would somebody please help me loop through and read each loaded *.mat file?
Thank you in advance!

Réponses (1)

Walter Roberson
Walter Roberson le 1 Jan 2016
dinfo = dir('*.mat');
for K = 1 : length(dinfo)
thisfile = dinfo(K).name;
datastruct = load(thisfile);
fn = fieldnames(datastruct);
data = datastruct.(fn{1});
fprintf('now playing: %s\n', thisfile);
sound(data);
end
  6 commentaires
Daulton_Benesuave
Daulton_Benesuave le 28 Jan 2016
Modifié(e) : Daulton_Benesuave le 28 Jan 2016
Thank you. The sound does now play but it's extremely distorted.
Walter Roberson
Walter Roberson le 29 Jan 2016
You probably need to specify a sampling frequency in the sound() call, but you have not given us any way to know what the appropriate frequency would be.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by