2013-07-22 2 views
0

настоящее время у меня это:Называя файл в MATLAB

[filename, pathname, filterindex] = uiputfile({... 
    ... (various filetypes) 
    'Disks image.jpg'); 
    if isequal(filename,0) || isequal(pathname,0) 
     disp('User selected Cancel'); 
    else 
     disp(['User selected ',fullfile(pathname,filename)]); 
    end 
    imwrite(M, 'Disks image.jpg', 'jpg'); 
    disp('Image saved'); 
end 

Как я пишу для части в настоящее время говорят «Диски Image.jpg» имя, которое является либо текущее время (задается следующее):

dateTime = javaMethod('currentTimeMillis', 'java.lang.System'); 

Или имя, которое является комбинацией обоих, что и некоторые другие указанное имя (например, currentTimeMillis_Diffraction_pattern.jpg)

Как я коплю два файла изображения, было бы хорошо, если Я могу назвать файл вторым методом, так как он дает упорядоченный список без необходимости разделить два изображения на разные папки файлов.

Использование времени ........... + ..........._ Diffraction_pattern.extension было бы здорово

Благодаря

ответ

1

Объединение строк может быть сделано как это:

filename=[num2str(dateTime) '_Diffraction_pattern.extension']; 

Или с помощью Sprintf:

filename=sprintf('%d_Diffraction_pattern.extension',dateTime); 
2

Не уверен, почему вы используете функцию Java, чтобы получить время, крыса чем встроенная функция времени Matlab. Я бы просто использовать

dateTimeString = datestr(now, 'yyyy-mm-dd-HH_MM_SS_FFF'); 

Тогда конкатенации, что с каким именем вы хотите создать имя файла:

myFileName = [dateTimeString '_withSomeName.jpg']; 
imwrite(M, myFileName, 'jpg'); 

Примечание - Я думаю, что если включить .jpg расширение на файл, он будет автоматически преобразуется на imwrite, поэтому вам не нужен третий аргумент. Также обратите внимание, что использование спецификатора формата FFF даст вам время до ms - поэтому он имеет ту же функциональность (и детализацию), что и ваш оригинальный вызов функции Java, но приводит к более разумным именам файлов.

Если вы настаиваете на использовании функции Java, вам нужно, чтобы преобразовать его внутренние часы от Matlab - это значит, что-то вроде этого (непроверенные):

timeNow = javaMethod('currentTimeMillis', 'java.lang.System'); 
timeMatlab = timeNow/(1000 * 3600 * 24) + datenum('1 Jan 1970'); 
dateTimeString = datestr(timeMatlab, 'yyyy-mm-dd-HH_MM_SS'); 

но почему бы вы сделали, что ...

Смежные вопросы