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!