How can I automatically let Matlab input the file in sequence?
1 次查看(过去 30 天)
显示 更早的评论
How can I let Matlab automatically input the file itself rather than one by one myself?
I mean, I want to put `Sample 1.wav` and then output `Sample 1.png` and then
put `Sample 2.wav` and then output `Sample 2.png` and then put `Sample 3.wav` and then output `Sample 3.png`
I do not want to type myself 1, 2, 3 and rather let the matlab run itself from `1 to 1,000`
[y,Fs] = audioread('sample1.wav');
spectrogram(y,'yaxis')
saveas(gcf,'sample1.png')
Then
[y,Fs] = audioread('sample2.wav');
spectrogram(y,'yaxis')
saveas(gcf,'sample2.png')
Then
[y,Fs] = audioread('sample3.wav');
spectrogram(y,'yaxis')
saveas(gcf,'sample3.png')
8 个评论
Roger J
2020-7-21
great news Alan.
What did you go with, my suggestion or did you use Stephen's solution?
If you used the solution, please mark it as the answer.
采纳的回答
Roger J
2020-7-21
Can you try the following:
>> for i=1:1000
fn_read ="sample"+i+".wav"; % this is the file name to read from
fn_read = char(fn_read); % convert the string to a char array
fn_write ="sample"+i+".png"; % this is the file name to write to
fn_write = char(fn_write); % convert the string to a char array
[y,Fs] = audioread(fn_read);
spectrogram(y,'yaxis')
saveas(gcf,fn_write)
end
let me know if it works.
2 个评论
Stephen23
2020-7-21
Defining strings and then converting to char is rather convoluted.
It is more efficient to use sprintf, as the documentation shows:
更多回答(1 个)
Khaled Hamed
2020-7-21
for i=1:1000
[y,Fs] = audioread(['sample' num2str(i) '.wav']);
spectrogram(y,'yaxis')
saveas(gcf,['sample' num2str(i) '.png'])
end
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!