Table of Contents
Why Tables Are Useful
Tables in MATLAB provide a convenient way to store and work with data that looks like a spreadsheet. Instead of relying only on numeric matrices, tables let you mix different data types in one container and refer to columns by names instead of numeric indices. This is particularly helpful when dealing with real world data such as measurements, experiment logs, or imported CSV and Excel files.
A table organizes data in rows and columns. Each column has a name and a data type, and each row usually represents one observation, record, or case. You can think of a table as a collection of variables, all with the same number of rows, grouped together into a single object.
Basic Structure of a Table
A MATLAB table has two main dimensions. The row dimension corresponds to individual observations. The column dimension corresponds to variables, each of which can have its own name. Each variable in a table is usually stored as a vector or array, and all variables must have the same number of rows.
You can inspect the basic structure of a table with the summary and height or width functions. If T is a table, then height(T) gives the number of rows and width(T) gives the number of variables. The summary(T) function prints an overview of each variable, including its type and some basic statistics or information.
Internally, each column of a table can be a numeric array, a string array, a datetime array, a categorical array, or other supported types. This flexibility is one of the main reasons tables are often preferred to simple matrices for organized data.
Naming Variables and Rows
Each column in a table has a variable name. MATLAB stores these in the VariableNames property of the table. When you create a table, you can supply variable names, or MATLAB can assign default names such as T1, T2, and so on. You can view or modify the variable names with the T.Properties.VariableNames property. For example, if T is a table, then T.Properties.VariableNames returns a cell array of the current names.
Tables can also have row names. Row names are optional labels for each row. They are stored in the RowNames property, which you can access using T.Properties.RowNames. Row names can make it easier to identify or select specific rows by label instead of by index. However, not all operations require or benefit from row names, so they are often left empty.
There are additional properties on the Properties field of a table, such as Description and UserData, which allow you to attach metadata to the table. For instance, you can store a short description of what the table represents in T.Properties.Description.
Tables vs Matrices and Other Containers
Traditional MATLAB matrices store only numeric values and do not support named columns. This is efficient and simple for purely numerical linear algebra, but it becomes less convenient when you need to attach meaning to each column or combine text and numbers.
Tables allow different variable types in different columns. For example, one column can be numeric, another can be a datetime array, and another can be a string array. This is not possible with a single numeric matrix. Compared to structures, tables are designed specifically for column oriented, rectangular data, where all variables share the same number of rows and can be processed together.
Tables are also tightly integrated with data import functions. Many reading functions such as readtable produce tables directly from files that have column headers, which makes it easier to work with real datasets without manually parsing them into separate variables.
Creating Tables in Simple Ways
Although there is a separate chapter about detailed table creation, it is useful here to see the basic idea. The main constructor is the table function. You pass column vectors as inputs, along with optional name value pairs to set properties like VariableNames. For example, you might combine numeric measurements and labels into a single table.
The key requirement is that all input columns must have the same number of rows so that they form a rectangular dataset. MATLAB will then group them into a table in which each input becomes a separate variable. After creation, you work with the table as a single variable rather than manipulating multiple separate vectors.
Common Places You Encounter Tables
You will frequently meet tables when importing data from text files, CSV files, or spreadsheets. Functions such as readtable automatically detect column names from headers in the file and assign appropriate variable types when possible. Many sample datasets provided by MATLAB are also stored as tables.
Tables are widely used in data analysis, statistics, and time series workflows. For example, you might store sensor readings, timestamps, and labels as columns in a table. Once your data is in a table, you can pass it directly to a variety of functions that know how to work with table variables by name.
Viewing and Inspecting Table Contents
When you display a table in the Command Window by typing its name, MATLAB prints a compact view of the rows and columns, including variable names as headers. This makes it easy to see the structure at a glance without needing extra code.
For a more interactive view, the variables in the table appear in the Workspace browser. Opening a table from there launches a spreadsheet like Variable Editor. You can scroll through rows and columns, sort by columns, and edit values interactively. This can be helpful for quick inspection before you start writing code to process the data.
The head and tail functions are useful to preview parts of a large table. head(T) shows the first few rows and tail(T) shows the last few rows, which lets you get a sense of the data layout without flooding the Command Window.
Basic Indexing Concepts for Tables
Tables support indexing both by numeric positions and by names. You can treat them in some ways like cell arrays or like structures. The most important concept at this stage is that you can refer to variables by their names, which is more readable than using numeric indices.
There is a distinction between selecting parts of a table and selecting the contents of variables, but the detailed syntax belongs to later chapters. For now, it is enough to know that tables support row indexing, column indexing, and combinations of both, and that you can use variable names to make your intent clearer.
Tables in a Typical MATLAB Workflow
In a simple workflow, you might start by importing data into a table, examining its structure, and then performing operations on the variables it contains. You can filter rows, compute new variables, and pass subsets of the table to plotting or analysis functions.
Because a table acts as a single variable, it fits naturally in scripts and functions. It is also convenient for saving and loading. When saved to a MAT file, a table keeps its variables, names, and properties, so you can restore your data structure in a later session and continue working without reimporting the original file.
Tables store column oriented, rectangular data where all variables share the same number of rows. Each column has a name and can have its own data type, which makes tables much more flexible than plain numeric matrices for real world datasets. You usually encounter tables when importing data from files, and you work with them as a single container that groups related variables together.