2013-07-03 54 views
6

Tôi đang cố gắng đọc tệp CSV trong MATLAB. Tôi chỉ muốn đọc cột thứ hai nhưng mã bên dưới sẽ in mọi thứ trên tệp CSV. Có gì các tham số hoặc chức năng tôi phải giới thiệu để làm cho nó đọc chỉ cột thứ haiĐọc cột cụ thể từ tệp CSV trong MATLAB

FILENAME = 'C:\Users\Desktop\Results.csv'; 

fid = fopen(FILENAME, 'rt'); 
a = textscan(fid, '%s', 'HeaderLines',1,'Delimiter',','); 
fclose(fid); 
celldisp(a) 

Trả lời

8

Có một số cách:

  1. Sử dụng cvsread:
    Giả sử bạn có N hàng trong file :

    a = csvread(FILENAME, 0, 1, [0 1 N-1 1 ]); 
    
  2. Bạn migh t cũng xem xét xlsread

    a = xlsread(FILENAME, 'B:B'); 
    

    Xem cụ thể example trên xlsread doc.

  3. lựa chọn khác là dlmread

    a = dlmread(FILENAME, ',', [0 1 N-1 1]); 
    

- Một cách tốt đẹp (và nhanh) để đếm số dòng trong file trong Matlab có thể được tìm thấy trong this answer by Rody Oldenhuis.

+0

Tôi chỉ đặt N = 10 và nhận cảnh báo này: R và C phải khớp với RANGE (1: 2). Sử dụng DLMREAD (FILE, DELIMITER, RANGE) để thay thế. > Trong dlmread tại 110 Trong csvread tại 54 Đọc tại 6 ??? Lỗi khi sử dụng ==> dlmread tại 145 Không khớp giữa tệp và chuỗi định dạng. Sự cố khi đọc số từ tệp (hàng 1, trường 2) ==> DFA S Lỗi trong ==> csvread tại 54 m = dlmread (tên tệp ',', r, c, rng); Lỗi trong ==> đọc tại 6 a = csvread (FILENAME, 0, 0, [0 1 10 1]); – Xara

+0

@Zara thử 'csvread (FILENAME, 0, 1, [0 1 N 1]);' – Shai

+0

??? Hàm không xác định hoặc biến 'N'. Lỗi trong ==> đọc tại 6 csvread (FILENAME, 0, 1, [0 1 N 1]); – Xara