Hi all
Its been a number of years since I used MATLAB and some of the code I once used doesn't seem to work as I once used. I know MATLAB got rid rid of wavplay so we should now be using sound but I seem to have hit a snag when it comes to running it through a for loop.
I have a bunch of variables that are my sound files which play perfectly fine when I run them through a standard command ie sound(condition1,44100)
However, when I try to run a for loop like this below, I have an error saying "Audio data must be real and floating point".
n = 6;
for i = 1:n;
sound(sprintf('condition%d',i))
pause(1)
end
In previous version, I notice sprintf would ouput without the apostrophe, whereas now it is (ie 'conditon1' as oppose condition1)
Any help would be gratefully received.
Barry

3 Kommentare

Stephen23
Stephen23 am 25 Jan. 2023
Bearbeitet: Stephen23 am 25 Jan. 2023
"In previous version, I notice sprintf would ouput without the apostrophe, whereas now it is (ie 'conditon1' as oppose condition1)"
SPRINTF has never added extra single quotes onto text data (unless they are in the text itself). You are confusing the data content with how data are displayed. A few years back (around 2016?) MATLAB changed how it displayed character vectors (to show them with single quotes), but this is unrelated to SPRINTF() and makes absolutely no difference to the content of the character vector. The displaying using single quotes is explained here:
"...some of the code I once used doesn't seem to work as I once used"
A quick perusal of the help going back to 2009 shows SOUND() has never accepted a character vector input.
"I have a bunch of variables that are my sound files which play perfectly fine when I run them through a standard command ie sound(condition1,44100)"
Then the actual source of your error is bad data design, specifically forcing pseudo-indices into variable names:
The simple solution is to use actual indexing, just like MATLAB is designed for and just as the documentation shows:
"Any help would be gratefully received. "
Never force meta-data into variable names.
Walter Roberson
Walter Roberson am 25 Jan. 2023
You can see from http://matlab.izmiran.ru/help/techdoc/ref/wavplay.html that character vectors were never valid input for wavplay()
Barry Bardsley
Barry Bardsley am 25 Jan. 2023
Stephen23, thanks for coming back to me on this, it really is much appreciated. I will get on the case, and have started following the guidance in the links.
Thanks again.
Barry

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Audio I/O and Waveform Generation finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 25 Jan. 2023

Kommentiert:

am 25 Jan. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by