『壹』 matlab裡面怎麼讀取txt文件
比如說在E:\new下有一系列txt文件,文件名符合matlab變數名的命名規則,並且沒有temp.txt文件,每個文件有兩列,以空格分割,第一列是字元串,第二列是浮點數字,要讀取第二列的浮點數字為數組並以文件名為變數名。
file=dir('E:\new\*.txt');
for n=1:length(file)
temp=dlmread(['E:\new\',file(n).name],' ',0,1);
eval([file(n).name(1:end-4),'=temp;'])
end
『貳』 想用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自己連續的讀取文本文件
for ii=1:1:20
aa=load(['文件名',num2str(ii),'.out']);%循環讀取文件
b=aa(2:3,2:2);%提取第2-3行,第2列的數據
end
親測可用
『肆』 如何從matlab中讀取"*.txt"文本文件的格式
根據你文本文件內容的不同可以有很多不同的讀取方法,詳見
一、純數據文件(沒有字母和中文,純數字)
對於這種txt文檔,從matalb中讀取就簡單多了
例如test.txt文件,內容為「17.901 -1.1111 33.045
17.891 -1.1286 33.045
17.884 -1.1345 33.045」
可以在command window中輸入load test.txt ,然後就會產生一個test的數據文件,內容跟test.txt中的數據一樣;另一種方法是在file/import data....../next/finish 也可產生一個叫test的數據文件。
二、中英文和數據如test1.txt
「你好
歡迎來到
振動論壇
vib.hit.e.cn
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555」
這樣的文件怎麼讀入數據呢?
方法有多種,現舉兩個比較簡單實用的。
方法一:
file/import data....../next/finish
>> 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 =
'你好'
'歡迎來到'
'振動論壇'
'vib.hit.e.cn'
方法二:
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
說明:%s可以是其他形式,跟讀入的數據類型有關,比如這里也可以用%n,%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'
因以字元串的形式讀入,所以有''。
————————————————————————————————
三、中文 數據 英文 混亂如test.txt
你好
1 11 111 1111
歡迎來到
2 22 222 2222
振動論壇
3 33 333 3333
vib.hit.e.cn
4 44 444 4444
5 55 555 5555
說明:這種內容格式的文件用上面的方法是不行的。
以下是由chinamaker編寫的一種方法:
fidin=fopen('test.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
『伍』 matlab如何讀取txt文件
1、首先,這里舉例自己先製作一個 文本文件,如下面頁面的內容。
『陸』 Matlab批量讀取一個文件夾里的txt文件
Matlab批量讀取一個文件夾里的txt文件的方法。
如下參考:
1.首先,在這里舉例製作一個txtde文本文件,如下面頁面的內容。
『柒』 matlab 如何讀取txt文件中的數據
讀取完二進制數據後可以用dec2bin命令將讀取的數據強制轉換成二進制
『捌』 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
『玖』 matlab中如何按行讀取txt文件
matlab讀取txt文件步驟如下:
MATLAB® Toolstrip: On the Home tab, in the Variable section, click Import Data.select file.
然後選定數據區域,在選擇的數據區域的時候選擇數據類型,這里我們選的是數值型。例如我們要的是A,B,C,D,E和R列
&lt;img src="https://pic1.mg.com/50/_hd.jpg" data-rawwidth="483" data-rawheight="459" class="origin_image zh-lightbox-thumb" width="483" data-original="https://pic1.mg.com/_r.jpg"&gt;
我們這樣就得到一個名為test矩陣。之後再把test矩陣寫入好了就可以了。