您好我正在尝试找到一种方法将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
答案 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
简单地将前两行写入文件,仅列举一些可能的功能。
希望你能在那里安装!