Ben*_* B. 0 file-io matlab filenames date save
您好,我正在尝试找到一种方法将2个变量从我的工作区保存到文件中.我希望使用原始日期和当前日期将文件名放在一起.
我只想要变量的最大值,所以:
max(streaking)
Run Code Online (Sandbox Code Playgroud)
和
max(tap_total)
Run Code Online (Sandbox Code Playgroud)
原始文件名是:
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
Run Code Online (Sandbox Code Playgroud)
这些可以保存在文本文件或电子表格中,没关系.
新文件名的示例如下所示:
3_FM001_02_05460$BandP$64_24000_FWD_1x1_7-26-2012
Run Code Online (Sandbox Code Playgroud)
也,
如果可以在文件中执行某些操作以显示哪个变量,例如:
Streaking: 1.272 % this would come from the variable max(streaking)
Tap_Total: 2.252 % this would come from the varaible max(tap_total)
Run Code Online (Sandbox Code Playgroud)
编辑:
% 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
Run Code Online (Sandbox Code Playgroud)
这将是一个使用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
Run Code Online (Sandbox Code Playgroud)
现在,关于regexprep
我在这里使用的命令的注释.这特定于您在此处提供的文件名.因为看起来你想在第一次_PRI
使用标签 后修剪掉所有东西,(\w*)
这意味着[a-z A-Z _ 0-9]
可以跟随任何组合.请注意,由于这是一个文件名,.
因此有一个因此我添加了一个句点,然后用另一个句点(\w*)
来完成csv.您可以在此处找到有关这些类型的运算符的更多信息.
现在您拥有了它,pruned_fname
您可以简单地添加任何您想要的东西.因此,如果您想使用下划线添加日期到空间,只需执行以下操作:
new_fname = [pruned_fname '_' date '.csv'];
new_fname =
3_FM001_02_05460$BandP$64_24000_FWD_1x1csv_26-Jul-2012.csv
Run Code Online (Sandbox Code Playgroud)
现在您只需打开要写入的文件即可.您可能需要将路径追加到要保存的位置,我现在就打算调用它path
.它会是这样的C:\Documents\
fid = fopen([path new_fname], 'w')
Run Code Online (Sandbox Code Playgroud)
现在,fid
您拥有要写入的文件的ID.这应该是一个新文件,如果不是这样,如果你这样做,你将覆盖文件内容.请注意=)
接下来,您只需将前两行写入文件fwrite
fprintf
,只需命名一些可能的函数即可.
希望你能在那里安装!