matlab匯入資料有2中方式,一種是在命令列通過代碼把資料導進去;另一種是通過matlab的資料匯入嚮導匯入。下面分布介紹這兩種方法:
一、使用matlab資料匯入嚮導
1、先來看看txt文檔中儲存的資料結構,如圖所示,資料之間用空格隔開,這種結構是比較理想的。可以直接匯入。或者資料之間用 逗號、分號、tab符號等等,都算作比較理想的。
2、 接著我們開啟MATLAB,在file菜單下找到import data選項,選擇所要添加的txt。添加進去即可。
3、然後會出現資料匯入設定嚮導介面,,我們首先要選擇是什麼符號隔開了資料,這裡自動的使用了空格作為間隔符,還可以使用 comma(逗號)、semicolon(分號)、tab(四個空格)、其他符號。在此我們選擇是空格,因為txt中的資料是以空格分隔。
4、根據自己的資料所要的格式選擇資料格式,如列向量或數值矩陣。在此我們選擇是資料矩陣,我們看到資料被存放到一個矩陣 裡。沒有欄位標題和列名。
5、選中所有資料後點擊匯入,我們看到資料匯入matlab的工作空間,在右側的工作區可以看到數值矩陣。
6、通過右擊工作區的數值矩陣可以看到對此矩陣的進行的操作,選擇另存新檔可以把此.mat檔案存放到我們想要的位置,一般情況下 是和我們的自己的項目放在一個檔案夾下,還可以修改。.mat的名字
二、通過指令匯入資料。如文字檔、word檔案、xml檔案、xls檔案、影像檔和音視頻檔案等。本節介紹文字檔(txt)的讀寫。其他檔案的讀寫,使用者可以參考MATLAB協助文檔。
1、csvread函數的調用格式如下:
● M = csvread('filename'),將檔案filename中的資料讀入,並且儲存為M,filename中只能包含數字,並且數字之間以逗號分隔。M是一個數組,行數與filename的行數相同,列數為filename列的最大值,對於元素不足的行,以0補充。
● M = csvread('filename', row, col),讀取檔案filename中的資料,起始行為row,起始列為col,需要注意的是,此時的行列從0開始。
● M = csvread('filename', row, col, range),讀取檔案filename 中的資料,起始行為 row,起始列為col,讀取的資料由數組 range 指定,range 的格式為:[R1 C1 R2 C2],其中R1、C1為讀取地區左上方的行和列,R2、C2為讀取地區右下角的行和列。
csvwrite 函數的調用格式如下:
● csvwrite('filename',M),將數組M中的資料儲存為檔案filename,資料間以逗號分隔。
● csvwrite('filename',M,row,col),將數組M中的指定資料儲存在檔案中,資料由參數 row和col指定,儲存row和col右下角的資料。
● csvwrite寫入資料時每一行以分行符號結束。另外,該函數不返回任何值。
2、excel資料匯入指令
data = xlsread('a.xls'); 首先要把a.xls檔案放到matlab工作目錄下
3、對於純文字型的 TXT 檔案
可以直接用x=load('a.txt')
補充:
MATLAB中有兩種檔案I/O程式:high level and low level.
High level routines: 包括現成的函數,可以用來讀寫特殊格式的資料,並且只需要少量的編程。
Low level routines: 可以更加靈活的完成相對特殊的任務,需要較多的額外編程。
High level routines 包括現成的函數,可以用來讀寫特殊格式的資料,並且只需要少量的編程。
舉個例子,如果你有一個包含數值和字母的文字檔(text file)想匯入MATLAB,你可以調用一些low level routines自己寫一個函數,或者是簡單的用TEXTREAD函數。
使用high level routines的關鍵是:檔案必須是相似的(homogeneous),換句話說,檔案必須有一致的格式。下面的段落描述一些high level file I/O routines並給出一些例子協助理解概念。
LOAD/SAVE
主要的high level file I/O routines 是LOAD 和 SAVE函數。LOAD
可以讀MAT-file data或者用空格間隔的格式相似的ASCII data. SAVE可以將MATLAB變數寫入MAT-file格式或者空格間隔的ASCII data。大多數情況下,文法相當簡單。下面的例子用到數值由空格間隔的ASCII file sample_file.txt :
1 5 4 16 8
5 43 2 6 8
6 8 4 32 1
90 7 8 7 6
5 9 81 2 3
Example:
用 LOAD and SAVE 讀寫資料
CODE:
% Load the file to the matrix, M :
M = load('sample_file.txt')
% Add 5 to M :
M = M +5
% Save M to a .mat file called 'sample_file_plus5.mat':
save sample_file_plus5 M
% Save M to an ASCII .txt file called 'sample_file_plus5.txt' :
save sample_file_plus5.txt M -ascii
UIGETFILE/UIPUTFILE
UIGETFILE/UIPUTFILE是基於圖形化使用者介面(GUI)的。會彈出對話方塊,列出目前的目錄的檔案和目錄,提示你選擇一個檔案。UIGETFILE讓你選擇一個檔案來寫(類似Windows ‘另存新檔’選項。)。用UIGETFILE,可以選擇已存在的檔案改寫,也可以輸入新的檔案名稱。兩個函數的傳回值是所選檔案名稱和路徑。
Example:
用 UIGETFILE 從目前的目錄選擇一個 M-file
CODE:
% This command lists all the M-files in the current directory and
% returns the name and path of the selected file
[fname,pname] = uigetfile('*.m','Sample Dialog Box')
注意: UIGETFILE 一次只能選擇一個檔案。
UIIMPORT/IMPORTDATA
UIIMPORT是一個功能強大,便於使用的基於GUI的high level routine,用於讀complex data files。檔案也必須是homogeneous。
IMPORTDATA形成UIIMPORT的功能,不開啟GUI。可以將IMPORTDATA用於函數或者指令碼中,因為在函數或者指令碼中基於GUI的檔案匯入機制並不理想。下面的例子用到包含幾行檔案頭和文本、數值資料的檔案'sample_file2.txt' :
This is a file header.
This is file is an example.
col1 col2 col3 col4
A 1 4 612.000
B 1 4 613.000
C 1 4 614.000
D 1 4 615.000
Example: Using IMPORTDATA to read in a file with headers, text, and numeric data
CODE:
% This reads in the file 'sample_file2.txt' and creates a
% structure D that contains both data and text data.
% Note the IMPORTDATA command specifies a white space
% as the delimiter of the file, but IMPORTDATA can usually
% detect this on its own
D = importdata('sample_file2.txt','') % 原文有誤。
D = importdata('sample_file2.txt')
可以通過訪問結構D的資料和文本域,來看結構D中的真實值,例如輸入:
data = D.data
text = D.textdata
可以用UIIMPORT讀同一個檔案並得到同樣的結構.
注意: 對於 ASCII data, 你必須檢驗匯入嚮導正確的識別了資料行分隔符號。
TEXTREAD/STRREAD
TEXTREAD 是一個強大的動態high level routine,設計用來讀ASCII格式的文本和/或數值資料檔案。STRREAD除是從字串而不是檔案讀以外,類似於TEXTREAD。
兩個函數可以用許多參數來改變其具體的工作方式,他們返回讀入指定輸出的資料。他們有效提供給你一個
“兩全其美”的方法,因為他們可以用一個命令讀入混合的ASCII和數值資料(high level routines的做法),並且你可以改變他們以匹配你特定的應用(如同low level routines做到的)。例子:
CODE:
Example 1: Using TEXTREAD to read in an entire file into a cell array
% This command reads in the file fft.m into the cell array, file
file = textread('fft.m','%s','delimiter','\n','whitespace','');
CODE:
Example 2: Using STRREAD to read the words in a line
% This command uses the cell array created