matlab 資料匯入

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.