[轉]matlab讀取cvs文件的幾種方法


什么是CSV文件

csv是最通用的一種文件格式,它可以非常容易地被導入各種PC表格及數據庫中。此文件,一行即為數據表的一行。生成數據表字段用半角逗號隔開。csv文件用記事本和excel都能打開,用記事本打開顯示逗號,用excel打開,沒有逗號了,逗號都用來分列了,還可有Editplus打開。

具體可看:https://baijiahao.baidu.com/s?id=1629072539075352018&wfr=spider&for=pc

怎樣用matlab打開csv文件

1,實用csvread()函數

1、M = csvread('filename')
2、M = csvread('filename', row, col)
3、M = csvread('filename', row, col, range)

第一種方法中,直接輸入文件名,將數據讀到矩陣M中。這里要求csv文件中只能包含數字。

第二種方法中,除了文件名,還指定了開始讀取位置的行號(row)和列號(col)。這里,行號、列號以0開始計數。也就是說,row=0, col=0表示從文件中第一個數開始讀。

第三種方法中,range限定了讀取的范圍。range = [R1 C1 R2 C2],這里(R1,C1)是讀取區域的左上角,(R2,C2)是讀取區域的右下角。在使用這種方法時,要求row, col等於range中的前兩項。

注意:csv文件中的空項,讀到矩陣中時,會初始化為0.

給定一個csvlist.csv文件,其內容如下

   02, 04, 06, 08, 10, 12

   03, 06, 09, 12, 15, 18

   05, 10, 15, 20, 25, 30

   07, 14, 21, 28, 35, 42

   11, 22, 33, 44, 55, 66

例1.1  讀取整個文件

csvread('csvlist.csv')

ans =

     2     4     6     8    10    12

     3     6     9    12    15    18

     5    10    15    20    25    30

     7    14    21    28    35    42

    11    22    33    44    55    66

 

例1.2  讀取第2行以下,第0列以右區域的數據

m = csvread('csvlist.dat', 2, 0)

m =

     5    10    15    20    25    30

     7    14    21    28    35    42

    11    22    33    44    55    66

例1.3  讀取第2行以下,第0列以右,第3行以上,第3列以左區域的數據

m = csvread('csvlist.dat', 2, 0, [2,0,3,3])

m =

     5    10    15    20

     7    14    21    28

2、使用textscan函數

在使用textscan函數前必須用fopen函數打開CSV文件。textscan函數讀取的結果會存在cell數組中。
調用格式
C = textscan(fid, 'format')
C = textscan(fid, 'format', N)
C = textscan(fid, 'format', param, value, ...)
C = textscan(fid, 'format', N, param, value, ...)
C = textscan(str, ...)
[C, position] = textscan(...)
關於textscan函數的具體用法見help textscan。

3、當成數據庫使用

具體方法可以去百度“matlab  數據庫編程”

4,使用importdata('myfile.cvs')

5,使用fgetl()函數,當成普通的txt文件讀取。

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,實際上它不顯示出來 

6,拖動到Matlab的工作區內

如果文件中全部都是數據的話,可以直接將數據拖動到Matlab的工作區內。

加載后出現下面的數據列表。

在保證所有數據都被選中的情況下,在工具欄的“導入的數據”中選擇要導入數據的類型,如果全部為數據,則可以導出為列矢量或者數值矩陣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM