How do I create a mat file in a loop and store a matrix generated in that newly created mat file? (i also need to save every created mat file in the loop)
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
sangeet sagar
am 24 Mär. 2018
Kommentiert: sangeet sagar
am 24 Mär. 2018
I tried with the following code but it says
for j=0:0
for k=0:1
filename=sprintf('%d%d.wav',j,k);
sin_of_sin=audioread(filename);
[st_matrix] = st_temp(sin_of_sin); % st_temp is my function file which returns the generated matrix
sprintf('angry_%d%d.mat',j,k)=st_matrix;
end
end
Error message:
Subscript indices must either be real positive integers or logicals.
2 Kommentare
Jan
am 24 Mär. 2018
Please post the complete error message, because it will tell us in which line the problem occurs.
Akzeptierte Antwort
Image Analyst
am 24 Mär. 2018
Instead of assigning a matrix to the sprintf() function, which of course you cannot do,
sprintf('angry_%d%d.mat',j,k)=st_matrix; % Bad syntax!!!
try this:
matFileName = fullfile(pwd, sprintf('angry_%d%d.mat',j,k));
save(matFilename, 'st_matrix');
3 Kommentare
Image Analyst
am 24 Mär. 2018
It will make those files. Variables to save are listed in single quotes. Each file will have the current verions/copy of st_matrix stored inside of it. If you also want to save the filename itself inside of the mat file, you can add it:
save(matFilename, 'st_matrix', 'matFilename');
Weitere Antworten (1)
Jan
am 24 Mär. 2018
sprintf('angry_%d%d.mat',j,k)=st_matrix;
This cannot work. On the left you create a char vector, not a variable. In addition there is no need to create a variable dynamically only to create a MAT file. See also: Tutorial: Why to avoid to create variables dynamically.
If you want to create a MAT file, use save:
FileName = sprintf('angry_%d%d.mat',j,k);
save(FileName, 'st_matrix');
2 Kommentare
Siehe auch
Kategorien
Mehr zu Audio and Video Data finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!