Ⅰ Matlab批量讀取一個文件夾里的txt文件
Matlab批量讀取一個文件夾里的txt文件的方法。
如下參考:
1.首先,在這里舉例製作一個txtde文本文件,如下面頁面的內容。
Ⅱ Matlab文件夾、文件、讀取操作(匯總)
在Windows中,「D:\」表示D盤,「D:」表示目錄
還可以查找特定後綴的文件:
如: dir(['fk\','*.jpg']) 表示查找 fk文件夾下後綴為 ' .jpg' 的文件
若 fk 目錄下存在後綴為'.jpg' 的文件,則返迴文件名:
1260500466587.jpg 1260500472025.jpg 8673601d.jpg
否則返回: fk.\*.jpg not found.
其中dirname是要查找的路徑的名字,路徑在matlab的搜索路徑內時,沒有必要輸入全名,只輸入最後或最後兩級就夠了。
fopen ('filename', 'mode')
mode格式有:
『r』:只讀方式打開文件(默認的方式),該文件必須已存在。
『r+』:讀寫方式打開文件,打開後先讀後寫。該文件必須已存在。
『w』:打開後寫入數據。該文件已存在則更新;不存在則創建。
『w+』:讀寫方式打開文件。先讀後寫。該文件已存在則更新;不存在則創建。
『a』:在打開的文件末端添加數據。文件不存在則創建。
『a+』:打開文件後,先讀入數據再添加數據。文件不存在則創建。 如果rt表示該文件以文本方式打開,如果添加的是「b」,則以二進制格式打開,這也是fopen函數默認的打開方式。
Fopen函數兩個返數升回值:
fclose(f)
f為打開文件的標志,若fclose函數返回值為0,則表示成功關閉f標志的文件;若返回值為–1,則表示無段遲法成功關閉該文件。
若要一次關閉打開的所有文件,可以使用下面的命令:fclose all
MATLAB自帶的MAT文件為二進制文件,但為了便於和外部程序進行交換以及方便查看文件中的數據,也常常採用文本數據格式(數據採用ASCII碼格式,可以表示字母和數字字元)與外界進行數據交換。
函 數 | csvread| dlmread| fscanf| load| textread|
-|-|-
數 據 類 型| 數值數據| 數值數據| 字母和數值| 數值數據| 字母和數值|
分 隔 符| 僅cooma| 任何字元| 任何字元| 僅space| 任何字元|
返 回 值| 1| 1| 1| 1| 多返回值
如: A=load('my_data.txt');
如果想把4列數據全部讀取出放在4個變數中,則使用如下命令:
>> [name gra grades answer]=textread('my_exam.dat','%s %s %f %s')
函 數| csvwrite| diary| dlmwrite| fprintf| save
-|-|-
數 據 類 型| 數值數據| 數值數據或單元陣列| 數值數據| 字母和握畢李數值數據| 數值數據
分 隔 符| 逗號| 空格| 任何字元| 任何字元| 製表符或空格符
存寫有分隔符的ASCII碼數據文件 若要將當前的MATLAB工作空間的一個或多個變數寫到一個有分隔符的ASCII碼文件中,可以使用save命令或dlmwrite函數。在默認情況下,save命令是以 MAT 格式存寫數據的。
作用 | 標志 | 例子
-|-
左對齊 | ' - ' | %-5.2f
列印符號字元(+或 - ) | '+' | %+5.2f
插入空格| ' ' | % 5.2f
墊零 | '0' | %05.2f
對%o, %x, %X, 列印 0,0x,0X的前綴。
對%f, %e, %E, 列印小數點,即使是0。
對%g, %G,不刪除或尾部的零或小數點。 | '#' | %#5.0f
例: 創建一個2×2的魔方矩陣,然後打開一文件,寫入數據。
fseek frewind
設定指針位置重設指針到文件起始位置
ftell feof
獲得指針位置測試指針是否在文件結束位置
Ⅲ 想用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)
我個人覺得用第一種方式較好。因為有些時候,特別是fx.txt 的一行種有多個數據時用load
就比較麻煩了。
Ⅳ matlab讀取excel數據
matlab讀取excel數據方法如下:
操作設缺隱備:戴爾靈越5000。
操作軟體:matlab2020b。
1、首先打開matlab軟體,點擊【新建】-【腳本】。
Ⅳ matlab中如何按行讀取txt文件
fid = fopen('aaa.txt');
tline = fgetl(fid);
while ischar(tline)
disp(tline)
tline = fgetl(fid);
end
fclose(fid);
Ⅵ Matlab如何讀取文本文件
1、讀入來 列數 和 行數均一致的數源據
可是直接用 load filename 或者load('filename');或者s=load('filename');如果filename 中為純數據,則直接讀入到一個矩陣中。
2、importdata函數可讀入數據(可以是文件,也可以是系統粘貼板上的內容),對於行列數不一致的按照第一行的列數對其,其餘的NaN補齊,以矩陣方式儲存。
a=inportdata(__,delimiterIn,headerlinesIn);指定數據的分割方式和跳過指定的行數進行讀數據,不過該方式將以cell的方式儲存。
3、csvread函數專門針對數據中間以「,」隔開的文件。利用R1(行,以0開始,列也一樣 ),C1(列)可以指定開始讀入數據的位置,與R2,C2配合使用可以指定讀入數據的范圍。
4、dlmread函數可以讀取「ASCII-分隔符」的數據文件,用法與csvrad類似。
Ⅶ 用MATLAB如何讀取一個文件夾里的圖片
1、查看圖片所物察仿在的位置。
Ⅷ matlab讀取任意路徑下文件
你可以復制過來嘛,實在不行可以修改工作區的,調整到你要的目錄就好了
具體如下
cd空格路徑
如
cd f
將當前工作區域轉換到f盤
這樣的話你要的就是
cd pathname
fopen(filename)
Ⅸ matlab如何讀取其中的一部分文件
一、純數據文件(沒有字母和中文,純數字耐祥)x0dx0a對於這種txt文檔,從matalb中讀取就簡單多了x0dx0a例如test.txt文件,內容為x0dx0a17.901 -1.1111 33.045 x0dx0a17.891 -1.1286 33.045 x0dx0a17.884 -1.1345 33.045x0dx0a可咐畝轎以在command window中輸入load test.txt ,然後就會產生一個test的數據文件,內容跟test.txt中的數據一樣衡肆;另一種方法是在file/import data....../next/finish 也可產生一個叫test的數據文件。x0dx0a二、中英文和數據如test1.txtx0dx0a你好 x0dx0a歡迎來到 x0dx0a論壇 x0dx0ae.cn x0dx0a1 11 111 1111 x0dx0a2 22 222 2222 x0dx0a3 33 333 3333 x0dx0a4 44 444 4444 x0dx0a5 55 555 5555x0dx0ax0dx0a這樣的文件怎麼讀入數據呢? x0dx0a方法有多種,現舉兩個比較簡單實用的。x0dx0a方法一: x0dx0afile/import data....../next/finish x0dx0a>> whos x0dx0aName Size Bytes Classx0dx0adata 5x4 160 double array x0dx0atextdata 4x1 300 cell arrayx0dx0aGrand total is 54 elements using 460 bytesx0dx0a>> datax0dx0adata =x0dx0a 1 11 111 1111 x0dx0a 2 22 222 2222 x0dx0a 3 33 333 3333 x0dx0a 4 44 444 4444 x0dx0a 5 55 555 5555x0dx0a>> textdatax0dx0atextdata =x0dx0a '你好x0dx0a '歡迎來到x0dx0a '論壇x0dx0a 'e.cn'x0dx0a方法二: x0dx0a[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4) x0dx0a說明:%s可以是其他形式,跟讀入的數據類型有關,比如這里也可以用%n,%f等。 x0dx0a這里%s的個數和[a1,a2,a3,a4]對應。 x0dx0a>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)x0dx0aa1 =x0dx0a Ƈx0dx0a ƈx0dx0a Ɖx0dx0a Ɗx0dx0a Ƌ'x0dx0aa2 =x0dx0a ཇx0dx0a དྷx0dx0a ཝx0dx0a ཨx0dx0a ཱི'x0dx0aa3 =x0dx0a 飇x0dx0a 餶x0dx0a 馥x0dx0a 騔x0dx0a 骃'x0dx0aa4 =x0dx0a x0dx0a x0dx0a x0dx0a x0dx0a x0dx0a因以字元串的形式讀入,所以有''。 x0dx0a————————————————————————————————x0dx0a三、中文 數據 英文 混亂如test.txtx0dx0a你好 x0dx0a1 11 111 1111 x0dx0a歡迎來到 x0dx0a2 22 222 2222 x0dx0a論壇 x0dx0a3 33 333 3333 x0dx0ae.cn x0dx0a4 44 444 4444 x0dx0a5 55 555 5555x0dx0a說明:這種內容格式的文件用上面的方法是不行的。x0dx0a以下是由chinamaker編寫的一種方法:x0dx0afidin=fopen('test.txt'); % 打開test2.txt文件 x0dx0afidout=fopen('mkmatlab.txt','w'); % 創建MKMATLAB.txt文件 x0dx0awhile ~feof(fidin) % 判斷是否為文件末尾 x0dx0a tline=fgetl(fidin); % 從文件讀行 x0dx0a if double(tline(1))>=48&&double(tline(1))<=57 % 判斷首字元是否是數值 x0dx0a fprintf(fidout,'%s\n\n',tline); % 如果是數字行,把此行數據寫入文件MKMATLAB.txt x0dx0a continue % 如果是非數字繼續下一次循環 x0dx0a end x0dx0aend x0dx0afclose(fidout); x0dx0aMK=importdata('MKMATLAB.txt'); % 將生成的MKMATLAB.txt文件導入工作空間,變數名為MK,實際上它不顯示出來 x0dx0a>> MKx0dx0aMK =x0dx0a 1 11 111 1111 x0dx0a 2 22 222 2222 x0dx0a 3 33 333 3333 x0dx0a 4 44 444 4444 x0dx0a 5 55 555 5555x0dx0a---------------------------------------------------------------x0dx0a我的txt數據里既有數字又有字元串,形式為:x0dx0a0.129515 DDAA 01 2.24609 94.50000 98x0dx0a0.130434 DDAA 01 2.24609 96.30000 9Ax0dx0a0.131441 DDAA 01 2.24609 97.20000 9Bx0dx0a0.132448 DDAA 01 2.24609 99.00000 9Dx0dx0a0.133507 DDAA 01 2.24609 100.80000 9Fx0dx0a0.134515 DDAA 01 2.24609 101.70000 A0x0dx0a............x0dx0a我只想要第一列,第四列,第五列。x0dx0a也就是0.129515 2.24609 94.50000 這3列數,x0dx0a怎樣導入matlab啊?x0dx0ax0dx0a假設數據在data.txt里,且位於當面matlab路徑里,用下面這句就可以了x0dx0a[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
Ⅹ matlab怎麼讀取文本文件中的數據
方法一:
A=importdata(file,space,line)
其中,file是所讀取的文件名,space是特定的分隔符,line是一個數字,指文本中字元串文字的行數,如上文的數據中line=4。
此代碼的含義是,line行是title,line+1行到end是數據,按特定分隔符space讀取數據。此方法可以讀取文本在上和數據在下的文件。
A是一個sturct,其中A.data就是所需的數據了。
exapmle:
A=importdata('test.txt','
',4);%運行即可取得數據A.data
此方法也可以按以下操作獲取:
在文件菜單中選擇
file/import
data,按照提示進行操作至結束。
在
command
窗口中輸入
>>
whos
Name
Size
Bytes
Class
data
5x4
160
double
array
textdata
4x1
300
cell
array
Grand
total
is
54
elements
using
460
bytes
>>
data
data
=
1
11
111
1111
2
22
222
2222
3
33
333
3333
4
44
444
4444
5
55
555
5555
>>
textdata
textdata
=
'你好'
'歡迎來到'
'百思論壇'
'www.si.net'
方法二:
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
說明:%s可以是其他形式,跟讀入的數據類型有關,比如這里也可以用%d,%f等。
這里%s的個數和[a1,a2,a3,a4]對應。
>>
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
a1
=
'1'
'2'
'3'
'4'
'5'
a2
=
'11'
'22'
'33'
'44'
'55'
a3
=
'111'
'222'
'333'
'444'
'555'
a4
=
'1111'
'2222'
'3333'
'4444'
'5555'
因以字元串的形式讀入,所以有''。
文件內容形式二(假定文件名為test2.txt):
你好
1
11
111
1111
歡迎來到
2
22
222
2222
百思論壇
3
33
333
3333
www.si.net
4
44
444
4444
5
55
555
5555
說明:這種內容格式的文件用上面的方法是不行的。
方法三:
以下是由chinamaker編寫的一種方法,但是需要重新建一個文本。
fidin=fopen('test2.txt');
%
打開test2.txt文件
fidout=fopen('mkmatlab.txt','w');
%
創建MKMATLAB.txt文件
while
~feof(fidin)
%
判斷是否為文件末尾
tline=fgetl(fidin);
%
從文件讀行
if
double(tline(1))>=48&&double(tline(1))<=57
%
判斷首字元是否是數值
fprintf(fidout,'%s\n\n',tline);
%
如果是數字行,把此行數據寫入文件MKMATLAB.txt
continue
%
如果是非數字繼續下一次循環
end
end
fclose(fidout);
MK=importdata('MKMATLAB.txt');
%
將生成的MKMATLAB.txt文件導入工作空間,變數名為MK,實際上它不顯示出來
>>
MK
MK
=
1
11
111
1111
2
22
222
2222
3
33
333
3333
4
44
444
4444
5
55
555
5555