Matlab與excel、txt的交互

一、Matlab與Excel的交互

1、引述:

數學建模題目常會將數據以附件形式存放在Excel表格中。Excel自帶了許多實用、便捷的數據處理功能,掌握這些技巧,往往足以進行數據的初步分析。但在需要進行模擬仿真等進一步操作的時候,需要將數據以矩陣形式導入Matlab中進行操作。因此熟練掌握Matlab與Excel的交互是程序員的一個不可缺少的基本技能。

2、讀取Excel中的數據——xlsread

Matlab自帶幫助文檔中xlsread函數的介紹與用法:

xlsread - Read Microsoft Excel spreadsheet file

    This MATLAB function reads data from the first worksheet in the Microsoft Excel

    spreadsheet file named filename and returns the numeric data in array num.

    num = xlsread(filename)

    num = xlsread(filename,sheet)

    num = xlsread(filename,xlRange)

    num = xlsread(filename,sheet,xlRange)

    num = xlsread(filename,sheet,xlRange,'basic')

    [num,txt,raw] = xlsread(___)

    ___ = xlsread(filename,-1)

    [num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',functionHandle)

以其中比較常用的一個用法舉例:

num = xlsread(filename,sheet,xlRange)

其中,num用于存放讀取到Matlab中的內容。 

filename為所需讀取的文件名,sheet為Excel中的sheet名, range為Excel表格中讀取范圍

注意:若待讀取Excel不與該.m文件在同一級目錄下,則filename變量須標出Excel文件路徑名,如’E:\ 1.xlsx’ 

若待讀取Excel與該.m文件在同一級目錄下,則filename變量可不標注excel文件路徑,如’1.xlsx’ 

推薦將.m文件與Excel文件放至同一目錄下并省略路徑名,代碼更簡單且在明確標注路徑名時,在他人電腦上運行文件路徑易改變,從而報錯。

實際代碼舉例:

>> data=xlsread('1.xlsx',‘sheet1’,'B2:G21')

該語句將matlab包含目錄下的‘1.xlsx’表格中sheet1的B2:G21的部分讀入了matlab里的data變量中。

MATLAB讀取sheet1中的數據

3.png

[num,txt,raw]=xlsread('C:\Users\Administrator\Desktop\test\a.xls') 

%num返回的是excel中的數據,txt輸出的是文本內容,row輸出的是未處理數據

%一般情況下,我們讀取的是excel中的數劇,所以可以直接用下面的,只輸出數據矩陣便可

[num]=xlsread('C:\Users\Administrator\Desktop\test\a.xls') 

4.png

讀取指定sheet中的數據

如果想讀取excel中的第二個sheet中的數據,可以輸入下面命令

[num]=xlsread('C:\Users\Administrator\Desktop\test\a.xls',2)

7.png

6.png

讀取指定單元格中的數據

[num]=xlsread('C:\Users\Administrator\Desktop\test\a.xls',2,'A2:C5')
8.png

3、將數據寫入Excel——xlswrite

Matlab自帶幫助文檔中xlsread函數的介紹與用法:

xlswrite - Write Microsoft Excel spreadsheet file

    This MATLAB function writes array A to the first worksheet in Excel file,

    filename, starting at cell A1.

    xlswrite(filename,A)

    xlswrite(filename,A,sheet)

    xlswrite(filename,A,xlRange)

    xlswrite(filename,A,sheet,xlRange)

    status = xlswrite(___)

    [status,message] = xlswrite(___)

以其中比較常用的一個用法舉例:

xlswrite(filename,A,sheet,xlRange)

A為待讀入數據,其他變量含義與上文介紹的xlsread函數用法例子相同。當所在目錄下無法找到該filename的文件時,會自動生成一個以該文件名命名的文件。

實際代碼舉例:

>> xlswrite('2.xlsx',data,‘sheet1’,'A1:F20')

假設data變量為Matlab中存儲了數據的變量,則該代碼將data變量中的20行6列的數據存儲到了2.xlsx中sheet1里的A1:F20區域。

二、Matlab與txt文檔的交互

1、引述:

數學建模題目偶爾也會將數據以附件形式存放在txt格式的文檔中。txt文檔并沒有自帶的便捷函數,此時一個比較方便的數據處理方法便是將txt文檔數據讀入matlab中進行處理。

2、從文本文檔讀入數據的函數——load和textread

(1)Matlab自帶幫助文檔中load函數的介紹與用法:

load - Load variables from file into workspace

    This MATLAB function loads data from filename.

    load(filename)

    load(filename,variables)

    load(filename,'-ascii')

    load(filename,'-mat')

    load(filename,'-mat',variables)

    S = load(___)

    load filename

以其中比較常用的一個用法舉例:

M=load(filename);  

filename為文本文檔的文件名,如’mydata.txt’

實際代碼舉例:

>> M=load('1.txt');

此代碼將1.txt文件中數據讀入Matlab并存儲在變量M中。

(2)Matlab自帶幫助文檔中textread函數的介紹與用法:

textread - Read data from text file; write to multiple outputs

    This MATLAB function reads data from the file filename into the variables A,B,C,

    and so on, using the specified format, until the entire file is read.

    [A,B,C,...] = textread(filename,format)

    [A,B,C,...] = textread(filename,format,N)

    [...] = textread(...,param,value,...)

以其中比較常用的一個用法舉例:

[data1,data2,data i…]=txtread(filename,’format’,N)

data i存儲.txt文件中的第i列數據;format為每列各個數據格式(如%d,%f,%s等,用法同c語言格式化輸入輸出);N為讀取的行數;

若.txt文件前N行為不需要的其他類型數據,可用

[data1,data2,datai…]=txtread(filename,’format’, ’headerlines’,N)

此時可以跳過前N行。

實際代碼舉例: 

假設文本文件 mydata.txt中的內容為: 

Sally Level1 12.34 45 Yes 

1 2 3 4 5

[data1,data2,data3,data4,data5] = textread('mydata.txt','%s %s %f %d %s', 1)

輸出結果為:

data1 = 

    'Sally'

data2 = 

    'Level1'

data3 =

   12.3400

data4 =

    45

data5 = 

    'Yes'

此代碼讀取了當前目錄下的’mydata.txt’文件中的第一行,五列讀取的數據類型分別為字符串、字符串、浮點數、整形數、字符串。

3、將數據寫入文本文檔中——save

save函數不僅用于txt文檔的保存,還常用于保存當前工作空間等。 

注:當多次往同一個文檔用save寫入變量時,后面的寫入會覆蓋前面。

matlab自帶幫助文檔中textread函數的介紹與用法:

save - Save workspace variables to file

    This MATLAB function saves all variables from the current workspace in a MATLAB

    formatted binary file (MAT-file) called filename.

    save(filename)

    save(filename,variables)

    save(filename,variables,fmt)

    save(filename,variables,version)

    save(filename,variables,'-append')

    save filename

保存當前工作空間的所有變量到filename指定的文件中,若不指定filename變量,則默認保存到matlab.mat這個文件中。 

參數variables為需要存入的變量,可輸入多個。

-append 在已經存在的mat文件中保存此變量

數據保存格式選項: 

-ascii 8位ASCII格式. 

-ascii -tabs 8位ASCII格式以tab位分隔符. 

-ascii -double 16位ASCII格式. 

-ascii -double -tabs 16位ASCII格式以tab位分隔符. 

-ascii -tabs 8位ASCII格式以tab位分隔符. 

-mat 默認格式

實際代碼舉例: 

save('d:\1.txt','data1','data2','-ASCII') 

此代碼將變量data1和data2中數據保存到了D盤下的1.txt文件,使用ASCII格式存儲數據。

2019-06-13_002453.png
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

19
1
6