MATLAB File I/O

This chapter introduces File Input/Output (I/O) operations in MATLAB, enabling users to read data from and write data to external files. File I/O is essential for data storage, sharing, and further analysis. By mastering MATLAB’s file I/O capabilities, users can efficiently handle data in various formats such as .txt, .csv, .mat, and more.

Chapter Goal

The goal of this chapter is to provide a comprehensive understanding of MATLAB file I/O operations. Key points include:

  1. Understanding file I/O operations for different file types.
  2. Learning how to read and write data effectively.
  3. Exploring file format compatibility and customization options.
  4. Implementing best practices for efficient and error-free file I/O.

Key Characteristics for MATLAB File I/O

  1. Support for Multiple Formats: Read and write data in .txt, .csv, .mat, and other file formats.
  2. Compatibility with Tabular Data: Handle tables, arrays, and cell arrays seamlessly.
  3. Binary and Text Data: Support for reading and writing both binary and text data files.
  4. Customizable Options: Control delimiters, headers, and precision during file I/O.
  5. Integration with MATLAB Environment: Store and retrieve data efficiently for workspace interaction.

Basic Rules for MATLAB File I/O

  1. File Access: Ensure the file exists in the specified path or handle exceptions gracefully.
  2. File Permissions: Open files with appropriate permissions (‘r’, ‘w’, ‘a’ for read, write, append).
  3. Data Formatting: Match data types and formats between MATLAB and the file for seamless I/O.
  4. Close Files: Always close files after operations to free resources using fclose.
  5. Error Handling: Use try and catch blocks to handle file I/O errors effectively.

Best Practices

  1. Use Built-in Functions: Prefer MATLAB’s high-level functions like readtable, writematrix, and load over low-level I/O operations.
  2. Validate File Paths: Check file paths programmatically before attempting operations.
  3. Optimize for Large Files: Use memory-efficient methods like partial loading for large files.
  4. Comment and Document: Clearly document file formats and expected data structures.
  5. Test with Sample Data: Test file I/O operations with sample data before using them in production.

This chapter equips you with the skills to perform efficient file I/O operations in MATLAB, enabling seamless data management and processing. Subsequent sections will delve into syntax, examples, and real-world applications.

Syntax Table

Serial No Component Syntax Example Description
1 Read Data from File data = readtable(‘file.csv’) Reads tabular data from a .csv file into a table.
2 Write Data to File writematrix(A, ‘file.csv’) Writes matrix A to a .csv file.
3 Load Data from MAT-File load(‘data.mat’) Loads variables from a .mat file into the workspace.
4 Save Data to MAT-File save(‘data.mat’, ‘var1’) Saves the variable var1 to a .mat file.
5 Open File for Reading fid = fopen(‘file.txt’, ‘r’) Opens a text file for reading and returns a file identifier.
6 Read Line from File line = fgetl(fid) Reads a single line from an open text file.
7 Close File fclose(fid) Closes an open file identified by fid.

Syntax Explanation

1. Read Data from File

What is Reading Data from a File?

Reading data from a file imports its content into MATLAB for analysis.

Syntax:

data = readtable(‘file.csv’);

Detailed Explanation:

  • The readtable function reads tabular data from a file.
  • Supports formats like .csv, .txt, and Excel files.

Example:

data = readtable(‘sales.csv’);

disp(data);

Output:

   Product    Sales

    _______    _____

    A          100

    B          200

2. Write Data to File

What is Writing Data to a File?

Writing data exports MATLAB variables to an external file for storage or sharing.

Syntax:

writematrix(A, ‘file.csv’);

Detailed Explanation:

  • The writematrix function writes matrices or arrays to a text or CSV file.

Example:

A = [1, 2; 3, 4];

writematrix(A, ‘output.csv’);

3. Load Data from MAT-File

What is Loading Data from a MAT-File?

Loading data retrieves variables saved in a .mat file into the workspace.

Syntax:

load(‘data.mat’);

Detailed Explanation:

  • The load function loads all variables or selected variables from a .mat file.

Example:

load(‘data.mat’, ‘var1’);

disp(var1);

4. Save Data to MAT-File

What is Saving Data to a MAT-File?

Saving data stores MATLAB variables in a .mat file for later use.

Syntax:

save(‘data.mat’, ‘var1’);

Detailed Explanation:

  • The save function writes variables to a .mat file.

Example:

var1 = [10, 20, 30];

save(‘data.mat’, ‘var1’);

5. Open File for Reading

What is Opening a File for Reading?

Opening a file allows for reading or writing operations.

Syntax:

fid = fopen(‘file.txt’, ‘r’);

Detailed Explanation:

  • The fopen function opens a file and returns a file identifier (fid).
  • Use the mode ‘r’ for reading, ‘w’ for writing, or ‘a’ for appending.

Example:

fid = fopen(‘data.txt’, ‘r’);

6. Read Line from File

What is Reading a Line from a File?

Reading a line retrieves one line of text from an open file.

Syntax:

line = fgetl(fid);

Detailed Explanation:

  • The fgetl function reads a single line from a file identified by fid.

Example:

fid = fopen(‘data.txt’, ‘r’);

line = fgetl(fid);

disp(line);

7. Close File

What is Closing a File?

Closing a file frees system resources and finalizes file operations.

Syntax:

fclose(fid);

Detailed Explanation:

  • The fclose function closes a file identified by its fid.
  • Always close files to avoid resource leaks.

Example:

fclose(fid);

Notes

  • Use high-level functions (readtable, writematrix) for simplicity and efficiency.
  • Validate file existence and permissions before performing operations.

Warnings

  • Forgetting to close files can lead to resource exhaustion.
  • Ensure compatibility between file formats and MATLAB functions.

Real-Life Project: Weather Data Analysis

Project Name: Analyzing Daily Weather Data

Project Goal:

To use MATLAB file I/O operations for reading, processing, and visualizing weather data stored in a .csv file.

Steps in the Project:

  1. Prepare the Data:
    • Create a .csv file containing columns for date, temperature, and rainfall.
  2. Read the Data:
    • Use MATLAB’s readtable function to load the data into the workspace.
  3. Process the Data:
    • Calculate the average temperature and total rainfall for the dataset.
  4. Visualize Results:
    • Create plots to display temperature trends and rainfall distribution.

Code for This Project:

% Step 1: Read the data

weatherData = readtable(‘weather_data.csv’);

 

% Step 2: Process the data

averageTemp = mean(weatherData.Temperature);

totalRainfall = sum(weatherData.Rainfall);

 

disp([‘Average Temperature: ‘, num2str(averageTemp), ‘ °C’]);

disp([‘Total Rainfall: ‘, num2str(totalRainfall), ‘ mm’]);

 

% Step 3: Visualize results

figure;

subplot(2, 1, 1);

plot(weatherData.Date, weatherData.Temperature, ‘-o’);

title(‘Daily Temperature’);

xlabel(‘Date’);

ylabel(‘Temperature (°C)’);

grid on;

 

subplot(2, 1, 2);

bar(weatherData.Date, weatherData.Rainfall);

title(‘Daily Rainfall’);

xlabel(‘Date’);

ylabel(‘Rainfall (mm)’);

grid on;

Save and Run:

  1. Save the script as weather_analysis.m.
  2. Run the script in MATLAB.

Expected Output:

Console Output:
Average Temperature: 22.5 °C

  1. Total Rainfall: 120 mm
  2. Plots:
    • A line plot showing daily temperature trends.
    • A bar chart displaying daily rainfall amounts.

Learning Outcomes:

  • Learn to read and process data from .csv files using MATLAB.
  • Understand basic statistical calculations and visualizations.
  • Gain insights into handling real-world datasets efficiently.