2013-07-22 71 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'); 

但爲什麼要這麼做?