天天看點

[轉載]将Matlab中的矩陣寫入txt檔案的方法

原文位址:将Matlab中的矩陣寫入txt檔案的方法作者:豫渝

檔案操作是一種重要的輸入輸出方式,即從資料檔案讀取資料或将結果寫入資料檔案。MATLAB提供了一系列低層輸入輸出函數,專門用于檔案操作。

1、檔案的打開與關閉

1)打開檔案

在讀寫檔案之前,必須先用fopen函數打開或建立檔案,并指定對該檔案進行的操作方式。fopen函數的調用格式為:

fid=fopen(檔案名,‘打開方式’)

說明:其中fid用于存儲檔案句柄值,如果傳回的句柄值大于0,則說明檔案打開成功。檔案名用字元串形式,表示待打開的資料檔案。常見的打開方式如下:

‘r’:隻讀方式打開檔案(預設的方式),該檔案必須已存在。

‘r+’:讀寫方式打開檔案,打開後先讀後寫。該檔案必須已存在。

‘w’:打開後寫入資料。該檔案已存在則更新;不存在則建立。

‘w+’:讀寫方式打開檔案。先讀後寫。該檔案已存在則更新;不存在則建立。

‘a’:在打開的檔案末端添加資料。檔案不存在則建立。

‘a+’:打開檔案後,先讀入資料再添加資料。檔案不存在則建立。

另外,在這些字元串後添加一個“t”,如‘rt’或‘wt+’,則将該檔案以文本方式打開;如果添加的是“b”,則以二進制格式打開,這也是fopen函數預設的打開方式。

2)關閉檔案

檔案在進行完讀、寫等操作後,應及時關閉,以免資料丢失。關閉檔案用fclose函數,調用格式為:

sta=fclose(fid)

說明:該函數關閉fid所表示的檔案。sta表示關閉檔案操作的傳回代碼,若關閉成功,傳回0,否則傳回-1。如果要關閉所有已打開的檔案用fclose(‘all’)。

2、二進制檔案的讀寫操作

1)寫二進制檔案

fwrite函數按照指定的資料精度将矩陣中的元素寫入到檔案中。其調用格式為:

COUNT=fwrite(fid,A,precision)

說明:其中COUNT傳回所寫的資料元素個數(可預設),fid為檔案句柄,A用來存放寫入檔案的資料,precision代表資料精度,常用的資料精度有:char、uchar、int、long、float、double等。預設資料精度為uchar,即無符号字元格式。

例6.8 将一個二進制矩陣存入磁盤檔案中。

>> a=[1 2 3 4 5 6 7 8 9];

>> fid=fopen(\'d:test.bin\',\'wb\')

%以二進制資料寫入方式打開檔案

fid =

3

%其值大于0,表示打開成功

>> fwrite(fid,a,\'double\')

ans =

9

%表示寫入了9個資料

>> fclose(fid)

ans =

%表示關閉成功

2)讀二進制檔案

fread函數可以讀取二進制檔案的資料,并将資料存入矩陣。其調用格式為:

[A,COUNT]=fread(fid,size,precision)

說明:其中A是用于存放讀取資料的矩陣、COUNT是傳回所讀取的資料元素個數、fid為檔案句柄、size為可選項,若不選用則讀取整個檔案内容;若選用則它的值可以是下列值:N(讀取N個元素到一個列向量)、inf(讀取整個檔案)、[M,N](讀資料到M×N的矩陣中,資料按列存放)。precision用于控制所寫資料的精度,其形式與fwrite函數相同。

3、文本檔案的讀寫操作

1)讀文本檔案

fscanf函數可以讀取文本檔案的内容,并按指定格式存入矩陣。其調用格式為:

[A,COUNT]=fscanf(fid,format,size)

說明:其中A用來存放讀取的資料,COUNT傳回所讀取的資料元素個數,fid為檔案句柄,format用來控制讀取的資料格式,由%加上格式符組成,常見的格式符有:d(整型)、f(浮點型)、s(字元串型)、c(字元型)等,在%與格式符之間還可以插入附加格式說明符,如資料寬度說明等。size為可選項,決定矩陣A中資料的排列形式,它可以取下列值:N(讀取N個元素到一個列向量)、inf(讀取整個檔案)、[M,N](讀資料到M×N的矩陣中,資料按列存放)。

2)寫文本檔案

fprintf函數可以将資料按指定格式寫入到文本檔案中。其調用格式為:

fprintf(fid,format,A)

說明:fid為檔案句柄,指定要寫入資料的檔案,format是用來控制所寫資料格式的格式符,與fscanf函數相同,A是用來存放資料的矩陣。

例6.9 建立一個字元矩陣并存入磁盤,再讀出指派給另一個矩陣。

>> a=\'string\';

>>

fid=fopen(\'d:char1.txt\',\'w\');

>> fprintf(fid,\'%s\',a);

>> fclose(fid);

>>

fid1=fopen(\'d:char1.txt\',\'rt\');

>>

fid1=fopen(\'d:char1.txt\',\'rt\');

>> b=fscanf(fid1,\'%s\')

b =

string

matlab讀txt檔案

fid=fopen(\'fx.txt\',\'r\');

%得到檔案号

[f,count]=fscanf(fid,\'%f %f\',[12,90]);

%把檔案号1的資料讀到f中。其中f是[12 90]的矩陣

%這裡\'%f %f\'表示讀取資料的形勢,他是按原始資料型讀出

fclose(fid);

%關閉檔案

另外有的txt檔案還可以用load來打開

其語句為

f=load(\'fx.txt)

一個寫入txt檔案的小例子:

N=100;

R=rand(1,N);

fid = fopen(\'tt.txt\',\'wt\');

for k=1:N;

p=num2str(R(k));

fprintf(fid,\'%c\',p);

fprintf(fid,\'%cn\',\' \');

end

fclose(fid);