2012-07-26 43 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

相關問題