我目前有这个:
[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
我如何为当前称为'Disks image.jpg'的部分编写一个当前时间的名称(由以下内容给出):
dateTime = javaMethod('currentTimeMillis', 'java.lang.System');
或同时包含该名称和其他指定名称的名称(例如currentTimeMillis_Diffraction_pattern.jpg)
当我保存两个图像文件时,如果我可以通过第二种方法命名文件会很好,因为它提供了一个有序列表,而不必将这两个图像分成不同的文件夹。
使用时间........... + ..........._ Diffraction_pattern.extension会很棒
由于
答案 0 :(得分: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');
但你为什么要这样做......
答案 1 :(得分:1)
字符串连接可以这样完成:
filename=[num2str(dateTime) '_Diffraction_pattern.extension'];
或使用sprintf:
filename=sprintf('%d_Diffraction_pattern.extension',dateTime);