使用部分文件名和日期保存文件

时间:2012-07-26 15:04:13

标签: matlab date file-io save filenames

您好我正在尝试找到一种方法将2个变量从我的工作区保存到文件中。我希望使用原始日期和当前日期将文件名放在一起。

我只想要变量的最大值:

max(streaking)

max(tap_total)

原始文件名是:

3_FM001_02_05460 $ $ bandp指向64_24000_FWD_1x1_PRI_PRI_PRI_PRI_15_17_ActivePixelMeans.csv

我想要使用的原始文件名的唯一部分是:

3_FM001_02_05460$BandP$64_24000_FWD_1x1

这些可以保存在文本文件或电子表格中,没关系。

新文件名的示例如下:

3_FM001_02_05460$BandP$64_24000_FWD_1x1_7-26-2012

此外,

如果可以在文件中执行某些操作以显示哪个变量,例如:

Streaking: 1.272  % this would come from the variable max(streaking)

Tap_Total: 2.252  % this would come from the varaible max(tap_total)

编辑:

% Construct a questdlg with three options

choice = questdlg('Would you like to save?', ...

'Save Options', ...

'Yes','No','Cancel','Cancel');

% Handle response

switch choice

case 'Yes'

    disp([choice ' processing.'])

    save_option = 1;
case 'No'
    disp([choice ' processing.'])
    save_option = 0;
case 'Cancel'
    disp('Canceled.')
    save_option = 2;
end

file_to_get = evalin( 'base', 'file_to_get' );
streaking = evalin( 'base', 'streaking' );
tap_total = evalin( 'base', 'tap_total' );

if save_option == 0
elseif save_option == 1

    max_streak = max(streaking);
    max_tap = max(tap_total);
    str_streak = mat2str(max_streak);
    str_tap = mat2str(max_tap);
    fname = file_to_get;
    pruned_fname = regexprep(fname,'_PRI(\w*).(\w*)','');
    new_fname = [pruned_fname '_' date '.csv'];
    path1 = '\\pfile01thn\bbruffey$\My Documents\analysis data\Banding and Streaking Results';
    fid = fopen([path1 new_fname], 'w');
    fprintf(fid,['Max Banding: %s\nMax Streaking: %s'],str_tap,str_streak)
    fclose(fid);
elseif save_option == 2
end

1 个答案:

答案 0 :(得分:5)

这是一个使用regexprep命令修剪原始文件名的好地方。

示例:

fname = '3_FM001_02_05460$BandP$64_24000_FWD_1x1_PRI_PRI_PRI_PRI_15_17_ActivePixelMeans.csv';
pruned_fname = regexprep(fname,'_PRI(\w*).(\w*)','');

pruned_fname =

3_FM001_02_05460$BandP$64_24000_FWD_1x1

现在,关于我在这里使用的regexprep命令的注释。这特定于您在此处提供的文件名。因为看起来你想要在第一个_PRI后使用标签(\w*)来修剪所有内容,这意味着[a-z A-Z _ 0-9]的任何组合都可以跟随。请注意,由于这是一个文件名,因此有一个.,因此我添加了一个句点,然后使用另一个(\w*)来完成csv。您可以找到有关这些类型的运算符的更多信息here

现在您拥有了pruned_fname,您只需添加您想要的任何内容即可。因此,如果您想使用下划线将日期添加到空格中,只需执行以下操作:

new_fname = [pruned_fname '_' date '.csv'];
new_fname =

3_FM001_02_05460$BandP$64_24000_FWD_1x1csv_26-Jul-2012.csv

现在您只需打开要写入的文件即可。您可能需要将路径追加到要保存的位置,我现在只打算将其称为path。它会像C:\Documents\

fid = fopen([path new_fname], 'w')

现在使用fid,您拥有要写入的文件的ID。这应该是一个新文件,如果不是,你将以这种方式覆盖文件内容。请注意=)

接下来,您可以使用fwrite fprintf简单地将前两行写入文件,仅列举一些可能的功能。

希望你能在那里安装!