【matlab】在程序運行結果中保存數據到txt文檔

文件寫入方法

問題提出:現在要保存程序的輸出結果,包括運行時間,運行結果和中間變量。其中運行時間和運行結果只是一個數字,中間變量結果時一個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的交互。

發佈了25 篇原創文章 · 獲贊 18 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章