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 次查看(过去 30 天)
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.

采纳的回答

Image Analyst
Image Analyst 2018-3-24
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 个评论
Image Analyst
Image Analyst 2018-3-24
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');

请先登录,再进行评论。

更多回答(1 个)

Jan
Jan 2018-3-24
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');

Community Treasure Hunt

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

Start Hunting!

Translated by