How do I extract the audiodata from a struct that I got from dir(fullfile.....

조회 수: 2 (최근 30일)
Wynand
Wynand 2023년 10월 21일
댓글: dpb 2023년 10월 22일
I have a folder with 100 wav files I need to iterate through and apply different functions to
This is what I have so far
clear
% Tester_object = audioread("Recordings\Speaker Female\Eendbekdier\f_ebd_1.wav");
% plot(Tester_object);
dir("Recordings\Male Lump\");
audio_files = dir(fullfile("Recordings\Male Lump\", '*.wav'));
for i=1:height(audio_files)
name = audio_files(i).name;
Tester = audioread(name); % This is the line that is not working that I don't know how to fix
%-------- Functions applied in this square to 'Tester'
% FFT
% Frequency spectrum bands
% Comparator
%-------- These are all sorted
end
I just need to know how do I get the audiodata from within the struct that is created by dir(fullfile.....
Thank you

채택된 답변

dpb
dpb 2023년 10월 21일
편집: dpb 2023년 10월 21일
"how do I get the audiodata from within the struct that is created by dir(..."
See dir documentation; dir() doesn't return files nor data, it returns a struct that contains the returned system file directory information--a significant difference. Where this misconception got started, I don't know, but it seems to be becoming more frequent...
To reference the files, dereference the struct by iterating over the number of elements within it -- it will always be a 1D struct so numel() is the appropriate counter limit.
d=dir(fullfile("Recordings\Male Lump\", '*.wav'));
for i=1:numel(d)
data=audioread(fullfile(d(i).folder,d(i).name));
...
  댓글 수: 6
Walter Roberson
Walter Roberson 2023년 10월 22일
I have seen too many people incorrectly build the file name inside the for loop so I prefer to build the fully-qualified names outside the loop. Then the loop can concentrate on the data processing work instead of on how the file names are obtained.
dpb
dpb 2023년 10월 22일
To each his own...I would strongly suspect if those people incorrectly build the file name inside the loop they'll also do so incorrectly outside that loop...at least until they do learn correct syntax.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Wynand
Wynand 2023년 10월 21일
This won't work when you are working with more dynamics folders but this is the solution that I found
clear
% Tester_object = audioread("Recordings\Speaker Female\Eendbekdier\f_ebd_1.wav");
% plot(Tester_object);
dir("Recordings\Male Lump\");
audio_files = dir(fullfile("Recordings\Male Lump\", '*.wav'))
anemone = audio_files(5).name
x = strcat("Recordings\Male Lump\" + anemone)
Check= audioread(x)
  댓글 수: 1
dpb
dpb 2023년 10월 21일
편집: dpb 2023년 10월 21일
See the Answer below for the correct solution that will work regardless of where the files are located.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Audio and Video Data에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by