2012-07-26 51 views
0

嗨那里我目前正试图找到一种方法来保存2个变量从我的工作区保存到文件中。我希望使用原始和当前日期将文件名放在一起。保存文件的一部分文件名和日期

我只是想从变量,这样的最大值:

max(streaking) 

max(tap_total) 

原来的文件名:

3_FM001_02_05460 $ bandp指向$ 64_24000_FWD_1x1_PRI_PRI_PRI_PRI_15_17_ActivePixelMeans.csv

这个原始fi的唯一部分我想要使​​用的名称是:

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 

回答

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。这应该是一个新文件,如果不是这样,你会覆盖文件内容。请注意=)

接下来,您可以简单地使用fwritefprintf将这些前两行写入文件,仅举几个可能的功能。

希望能让你在那里设置!

+0

好的,所以我只是使用工作区变量创建“file_to_get”来补充fname。这工作很好。它完美地创建了新的文件名。它只是告诉我,我需要使用fopen。我已经添加了我认为是正确的事情。这是尝试使用fprintf。当我尝试使用fwrite时,它不保存任何内容,但没有给出错误。 – 2012-07-26 16:00:01

+0

如果你更新你的问题与你如何使用'fwrite'和'fprintf',我可能会提供一个更好的手。只是举一个例子,说明你如何在原问题结尾处提到的两行信息中写入信息。你可能不会太远。 – 2012-07-26 16:35:53

+0

看到我的编辑,我试图提示用户选择是否要保存或不保存。 – 2012-07-26 16:56:03