將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 =
0 %表示關閉成功
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,'%c/n',' ');
end
fclose(fid);