1.引言
在使用matlab將數(shù)據(jù)導(dǎo)入到工作空間的時(shí)候,經(jīng)常會(huì)使用到兩個(gè)函數(shù),一個(gè)是importdata函數(shù),另一個(gè)是load函數(shù),它們的使用方法和使用場景是太相同的,如果不太注意就可能會(huì)犯錯(cuò)誤,在這里做簡要的說明和記錄。
2.importdata函數(shù)
下面是幫助文檔提供的importdata函數(shù)的語法說明
importdata
load data from fileSyntax
A = importdata(filename)
A = importdata(‘-pastespecial’)
A = importdata( _ ,delimiterIn)
A = importdata( _ ,delimiterIn,headerlinesIn)
[A,delimiterOut,headerlinesOut] = importdata( _ )Description
- A = importdata(filename) loads data into array A.
- A = importdata(‘-pastespecial’) loads data from the system - clipboard rather than from a file.
- A = importdata( _ ,delimiterIn) interprets delimiterIn as the column separator in ASCII file, filename, or the clipboard data. You can use delimiterIn with any of the input arguments in the above syntaxes.
- A = importdata( _ ,delimiterIn,headerlinesIn) loads data from ASCII file, filename, or the clipboard, reading numeric data starting from line headerlinesIn+1.
- [A,delimiterOut,headerlinesOut] = importdata( _ ) additionally returns the detected delimiter character for the input ASCII file in delimiterOut and the detected number of header lines in headerlinesOut, using any of the input arguments in the previous syntaxes.
- importdata函數(shù)主要特點(diǎn)是可以從文本文件中導(dǎo)入數(shù)據(jù)
- 導(dǎo)入的數(shù)據(jù)可以是類似于表格形式的,可以含有表頭即列名稱,也可以不含表頭。
- 表頭可以是文本形式的。
- 除了官方文檔說明的這些我發(fā)現(xiàn),importdata導(dǎo)入的數(shù)據(jù)除了可以列名外還可以含有行名。導(dǎo)入時(shí)列名會(huì)被放在colheaders數(shù)組中,行名會(huì)被放在rowheaders數(shù)組中。
- importdata還可以用來導(dǎo)入圖片,傳入圖片的名稱即可
樣例1:
%1.txt
%a1 a2 a3 a4
%1 3 5 3
%1 2 4 6
%7 5 4 8
%3 7 9 8
%2 3 7 4
> > impdata = importdata('1.txt')
impdata =
包含以下字段的 struct:
data: [5×4 double]
textdata: {'a1' 'a2' 'a3' 'a4'}
colheaders: {'a1' 'a2' 'a3' 'a4'}
> > class(impdata)
ans =
'struct'
可見importdata函數(shù)會(huì)將數(shù)據(jù)導(dǎo)入到一個(gè)結(jié)構(gòu)體變量中,文本與數(shù)字分別導(dǎo)入到結(jié)構(gòu)不同的屬性中。數(shù)字部分導(dǎo)入到屬性data中是一個(gè)矩陣,文本部分導(dǎo)入屬性textdata中是一個(gè)細(xì)胞數(shù)組。如果textdata中的文本是列名則同時(shí)還會(huì)保存到屬性colheaders中
樣例2:
%2.txt
%b1 1 3 5 3
%b2 1 2 4 6
%b3 7 5 4 8
%b4 3 7 9 8
%b5 2 3 7 4
> > impdata = importdata('2.txt')
impdata =
data: [5x4 double]
textdata: {5x1 cell}
rowheaders: {5x1 cell}
如果textdata中的文本是行名則同時(shí)還會(huì)保存到屬性rowheaders中。注意不能將行名稱放在最后一列,這樣將不能正確導(dǎo)入。所以在進(jìn)行分類時(shí),不能將字符型的類標(biāo)簽放在最后一列,而是應(yīng)該放在第一列。
樣例3:
%3.txt
%a1 a2 a3 a4
%b1 b2 b3 b4
%1 3 5 3
%1 2 4 6
%7 5 4 8
%3 7 9 8
%2 3 7 4
> > impdata = importdata('3.txt')
impdata =
data: [5x4 double]
textdata: {2x4 cell}
colheaders: {'b1' 'b2' 'b3' 'b4'}
可以看到如果在頭部文本超過兩行,只有最后一行會(huì)作為列名分開讀取,前面的列作為一個(gè)字符串,不分開,分隔符也不會(huì)被識(shí)別,而是當(dāng)做普通字符。
樣例4:
%a1 a2 a3 a4
%b1 1 3 5
%b2 1 2 4
%b3 7 5 4
%b4 3 7 9
%b5 2 3 7
> > impdata = importdata('4.txt')
impdata =
data: [5x3 double]
textdata: {6x4 cell}
3.load函數(shù)
load函數(shù)一般將用來導(dǎo)入純數(shù)字的文件,可以是文本格式的文件或者是matlab保存的mat格式的文件。
>> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
>> save A.mat A
>> clear
>> load A.mat
>> load 5.txt # 自動(dòng)生成X+txt文件名的變量
>> B = load('5.txt') # 把導(dǎo)入的數(shù)值賦給B
-
MATLAB仿真
+關(guān)注
關(guān)注
4文章
176瀏覽量
20284 -
ASCII碼
+關(guān)注
關(guān)注
0文章
51瀏覽量
17482
發(fā)布評(píng)論請先 登錄
評(píng)論