文件寫入方法
問題提出:現在要保存程序的輸出結果,包括運行時間,運行結果和中間變量。其中運行時間和運行結果只是一個數字,中間變量結果時一個n*n的矩陣和一個2*n的矩陣。想把這些量保存在txt文件中。
save 函數
將工作空間中的變量寫入文件,導出mat文件中。
1. 調用dlmwrite函數
dlmwrite(filename,M)
dlmwrite(filename,M,’D’) D用來指定數據間分隔符。 ‘ ’表示空格。’\t’ 製表符
dlmwrite(filename,M,’attrib1’,value1,’ attrib2’,value2,…………)
參數名(attribute) |
參數值(value) |
說明 |
delimiter |
單個字符 |
設定數據間分隔符 |
newline |
‘pc’ |
設定換行符爲‘\r\n’ |
‘unix’ |
設定換行符爲‘\n’ |
|
precision |
以%引導的精度控制符 |
指定有效位數 |
dlmwrite('1.txt',A,' ') 將A中的數據存入1.txt中,並以空格作爲分隔符。若沒有文件1,則創建txt文件。
dlmwrite('2.txt',A,'\t') \t 製表符,有利於顯示
dlmwrite('2.dat',A,' ') 將A中的數據存入2.dat中,並以空格作爲分隔符。若沒有文件1,則創建txt文件。
dlmwrite('2.txt',A,' ')
dlmwrite('2.txt',a,'-append') 將a中的數據接着存入2.txt中,若沒有'-append'則將2.txt清空,再存入a。
總結:可以用dlmwrite 將運行結果存入txt文件中。
dlmwrite('result.txt',obj,'\t');
dlmwrite('a.txt',a,'\t');
dlmwrite('time.txt',cpu_time,'\t');
2,調用 fprintf 函數寫入數據
以上調用dlmwrite函數雖然可以使用,但是不能將結果寫入同一個文檔中。嘗試用fprintf函數實現寫入同一個文檔中的功能。
count= fprintf(fid,format,A,……) A存入fid
轉換指示符用來控制符號表示法,對齊方式,有效位數,字段寬度和輸出格式等。format字符串包括含不可打印的控制符,如換行或者製表符等。
1)控制標誌(可選)“-”表示左對齊。
2)字段寬度(可選)
3)精度(可選)
4)轉換符(必須) %-6.2f 表示以左對齊方式輸出一個浮點數,寬度爲6個字符,小數點後面有2個有效數字。
\f:進紙; \n:換行; \t:水平製表符;
注意:調用fprintf函數寫入數據時,format參數指定的格式循環作用於列上,原始矩陣的列在文件中或屏幕上就變成了行。下次使用的時候要轉置過來!
當n=9時,程序爲:
fid=fopen('result.txt','at'); %新建一個result的txt文件存放結果
fprintf(fid,'% -f\n',cpu_time); %存儲運行時間
fprintf(fid,'% -f\n',obj); %存儲運行結果
fprintf(fid,'%-1.0f %-1.0f %-1.0f %-1.0f%-1.0f %-1.0f % -1.0f % -1.0f % -1.0f\r',a);% 以%開始,-爲控制符號,1爲字符寬度,0爲小數點後面的位數,f爲轉化符,\r爲換行。
fclose(fid);
總結:可以存放在同一個文檔中便於管理,但是不足之處在於當n的值變大的時候,a變量的寫入書寫有難度。
下一步是思考當程序運行比較多的時候,怎麼批量讀數據和寫數據以及數據和excel的交互。