Working with CSV files is a common task in data analysis and scientific computing. MATLAB, a high-level programming language and environment specifically designed for numerical computation and data analysis, provides several ways to read CSV files. In this article, we will explore five different methods to read CSV files in MATLAB, highlighting their advantages, limitations, and applications.
Introduction to Reading CSV Files in MATLAB

Csv files, short for comma-separated values, are plain text files that contain tabular data, with each row representing a single record and each column representing a field or variable. MATLAB offers various built-in functions and techniques to import data from CSV files, catering to different data types and complexity levels. Understanding the most appropriate method for your specific task is crucial for efficient data processing.
Key Points
- csvread: A basic function for reading numeric data from CSV files.
- dlmread: Similar to csvread but allows for specifying a delimiter other than a comma.
- readtable: Offers a more structured approach to reading CSV files, including support for non-numeric data and metadata.
- readmatrix and readcell: Modern functions introduced in newer MATLAB versions, providing more flexibility and efficiency in reading CSV files.
- Import Tool: A graphical user interface for importing data from various file types, including CSV, without writing code.
1. Using csvread Function

The csvread function is one of the simplest ways to read a CSV file in MATLAB. It is specifically designed for numeric data and does not support reading non-numeric data directly. The basic syntax is M = csvread(filename), where M is the matrix containing the data from the file specified by filename.
Example: ```matlab M = csvread('example.csv'); ``` This function is straightforward but lacks the flexibility needed for more complex data types or when detailed control over the import process is required.
Limitations of csvread
While csvread is convenient for simple numeric data, it does not handle non-numeric data gracefully and requires additional steps for data type conversion or handling missing values.
2. Using dlmread Function
The dlmread function is similar to csvread but offers more flexibility by allowing the specification of a delimiter. This makes it useful not only for CSV files but also for other types of delimited text files. The syntax is M = dlmread(filename, delimiter).
Example: ```matlab M = dlmread('example.csv', ','); ``` This function provides a bit more control than csvread but still focuses on numeric data and lacks support for more complex data structures.
Advantages of dlmread Over csvread
The primary advantage of dlmread is its ability to handle different delimiters, making it more versatile for various types of text files.
3. Using readtable Function
readtable is a more powerful function that allows for reading CSV files into a table, which can contain both numeric and non-numeric data. It also supports reading metadata such as variable names. The basic syntax is T = readtable(filename).
Example: ```matlab T = readtable('example.csv'); ``` This function provides a structured approach to data import and is particularly useful when working with mixed data types or when the CSV file includes a header row that should be used as variable names.
Benefits of Using readtable
The readtable function offers better support for non-numeric data and provides a more organized structure for the imported data, making it easier to manipulate and analyze.
4. Using readmatrix and readcell Functions

In newer versions of MATLAB, readmatrix and readcell have been introduced as more modern alternatives for reading CSV files. readmatrix is similar to csvread but offers better performance and support for newer data types. readcell reads CSV files into a cell array, providing a flexible container for mixed data types.
Examples: ```matlab M = readmatrix('example.csv'); C = readcell('example.csv'); ``` These functions are designed to replace older functions like csvread and dlmread with more efficient and flexible tools.
Advantages of Modern Functions
readmatrix and readcell offer better performance and are more adaptable to different data scenarios, making them preferred choices for reading CSV files in newer MATLAB versions.
5. Using the Import Tool
For users who prefer a graphical interface, MATLAB’s Import Tool provides an interactive way to import data from CSV files without writing code. It can be accessed through the Import Data option in the MATLAB Home tab.
Steps: - Open the Import Tool. - Select the CSV file. - Configure import options as needed. - Import the data into the workspace.
Benefits of the Import Tool
The Import Tool offers a user-friendly interface for importing CSV files, allowing for easy previewing of data, selection of import options, and direct import into the MATLAB workspace.
Function | Description |
---|---|
csvread | Basic function for reading numeric CSV files. |
dlmread | Similar to csvread but allows specifying a delimiter. |
readtable | Reads CSV files into a table, supporting mixed data types. |
readmatrix and readcell | Modern functions for efficient reading of CSV files into matrices or cell arrays. |
Import Tool | Graphical interface for importing data from CSV files. |

What is the most efficient way to read large CSV files in MATLAB?
+For large CSV files, using readmatrix or readcell is often the most efficient approach, as these functions are optimized for performance. Additionally, consider using the 'UseParallel' option with readtable if you have a multi-core processor and a large dataset.
How do I handle missing values when reading a CSV file in MATLAB?
+When using readtable, missing values are automatically detected and represented as NaN (Not a Number) for numeric data or as empty strings for text data. You can then use various MATLAB functions to replace or interpolate these missing values based on your analysis requirements.
Can I read specific columns from a CSV file using MATLAB?
+Yes, with readtable, you can specify which columns to read by using the 'Range' option or by selecting specific variables after the table has been imported. For example, T = readtable('example.csv', 'Range', [1 1:3]) reads the first three columns.
In conclusion, MATLAB provides a versatile set of tools for reading CSV files, catering to various needs and preferences. By understanding the capabilities and limitations of each method, you can optimize your data import process and focus on the analysis and insights that matter.