在matlab中命名文件

时间:2013-07-22 17:20:12

标签: matlab naming

我目前有这个:

[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会很棒

由于

2 个答案:

答案 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);