필터 지우기
필터 지우기

save in a folder

조회 수: 430 (최근 30일)
joseph Frank
joseph Frank 2013년 3월 3일
편집: Image Analyst 2022년 11월 10일
Hi,
I want to save in a folder mat files with a changing name.
for i=1:length(ID)
Filename=[num2cell(ID(i)) '.mat'];
save('C:\Users\Documents\MATLAB\TechnicalFinal\Filename','Close')
end
I am ending up with a file called Filename.mat instead of 1.mat,2.mat,and 3.mat where 1,2,3 are the ID number in the loop. Is there a way to fix that? Best

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2013년 3월 3일
편집: Azzi Abdelmalek 2013년 3월 3일
use
for k=1:5
Filename=sprintf('%d.mat',k);
end
Also
save(['C:\Users\Documents\MATLAB\TechnicalFinal\' Filename],'close')
Because
filename='2.mat'
folder='C:\Users\filname'
Result
C:\Users\filname
and now
filename='2.mat'
folder=['C:\Users\' filename]
Result
C:\Users\2.mat

추가 답변 (1개)

Image Analyst
Image Analyst 2013년 3월 3일
편집: Image Analyst 2022년 11월 10일
Follow the instructions in The FAQ. It covers changing mat filenames in a loop. It's also good to use fullfile() in addition to sprintf() to build the complete filename, as the second FAQ example shows.
folder = 'C:\Users\Documents\MATLAB\TechnicalFinal'; % Or wherever you want.
for k = 1 : length(ID)
% Create the base file name from the number contained in the "ID" variable.
baseFileName = sprintf('%3.3d.mat', ID(k)); % For example '037.mat'.
% Prepend the folder to get the full file name.
fullFileName = fullfile(folder, baseFileName);
% Save the variable (badly) named "Close" to this mat file.
save(fullFileName, 'Close');
end
I use 3.3d so that we will have 3 digits for the base file name and they will sort properly when the names are retrieved from dir() or when looking at the files in File Explorer. This will handle up to 999 files. If you have more than that increase the 3 to 4 or 5 or whatever is needed.

카테고리

Help CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by