
В MATLAB данные представлены в виде массивов, где базовой структурой является матрица типа double. Даже скаляры и векторы рассматриваются как частные случаи матриц. Это упрощает реализацию алгоритмов линейной алгебры и позволяет унифицировать обработку различных типов данных.
Часто используются типы single и double для числовых вычислений с плавающей точкой. Для экономии памяти в задачах с ограниченными ресурсами предпочтителен тип single, но стоит учитывать снижение точности. Целочисленные форматы (int8, uint16 и др.) применяются при работе с изображениями, бинарными данными и системами реального времени.
Логический тип logical эффективен при работе с масками, фильтрами и условной выборкой. Символьные строки и строковые массивы представлены типами char и string, причем string предпочтительнее для работы с текстом в современных версиях MATLAB благодаря более высокой гибкости и удобству манипуляций.
Структуры (struct) и ячейки (cell) применяются для хранения разнородных данных. Структуры позволяют обращаться к данным по именам полей, а ячейки – хранить элементы разных типов и размеров. Для сложных моделей данных рекомендуется комбинировать оба подхода в зависимости от требований к доступу и обработке.
Таблицы (table) и временные таблицы (timetable) используются для работы с гетерогенными наборами данных, особенно в задачах анализа данных и построения временных рядов. Эти форматы обеспечивают поддержку именованных переменных и автоматизированную синхронизацию по времени.
Чтение и сохранение матриц в формате.mat

Файлы с расширением .mat используются в MATLAB для хранения переменных, включая матрицы любых размеров и типов. Этот формат поддерживает как простые, так и структурированные данные, включая многомерные массивы и ячейки.
- Для сохранения матрицы используйте команду
save:save('имя_файла.mat', 'A')– сохраняет переменнуюAв файл.save('имя_файла.mat', 'A', '-v7.3')– используется при сохранении больших массивов, превышающих 2 ГБ.
- Если необходимо сохранить все переменные текущей рабочей области:
save('имя_файла.mat')
- Для загрузки данных применяется команда
load:load('имя_файла.mat')– загружает все переменные из файла в текущую рабочую область.load('имя_файла.mat', 'A')– загружает только переменнуюA.
Проверку содержимого файла без его загрузки в рабочую область выполняйте командой whos -file имя_файла.mat.
Формат .mat версии по умолчанию – -v7. Для совместимости с более старыми версиями MATLAB используйте -v6, а для хранения объектов, структур и больших данных – -v7.3.
Не используйте -v7.3 без необходимости: он создаёт файлы большего размера и может замедлить операции сохранения и загрузки. Для большинства задач достаточно форматов -v7 или -v6.
Импорт текстовых файлов с табличными данными

Для загрузки табличных данных из текстовых файлов в MATLAB применяется функция readtable. Она поддерживает форматы CSV, TSV и другие текстовые файлы с разделителями. Пример использования:
T = readtable('данные.csv');
По умолчанию MATLAB определяет разделитель автоматически, но при необходимости его можно указать явно с помощью параметра 'Delimiter'. Например, для файлов с табуляцией:
T = readtable('таблица.txt', 'Delimiter', '\t');
Если в файле присутствует строка заголовков, readtable распознаёт её автоматически. При отсутствии заголовков используется параметр 'ReadVariableNames':
T = readtable('без_заголовков.txt', 'ReadVariableNames', false);
Для пропуска ненужных строк в начале файла применяется 'HeaderLines'. Пример:
T = readtable('пример.txt', 'HeaderLines', 3);
Если необходимо задать конкретный формат столбцов, используется параметр 'Format'. Пример с тремя столбцами: числом, строкой и логическим значением:
T = readtable('пример.txt', 'Format', '%f%s%t');
В случае некорректных или отсутствующих значений можно указать значение-пустышку через 'TreatAsEmpty':
T = readtable('данные.csv', 'TreatAsEmpty', {'NA', 'n/a', ''});
Если файл содержит нестандартную кодировку, её можно задать явно через 'Encoding', например:
T = readtable('файл.txt', 'Encoding', 'Windows-1251');
Для ускорения импорта больших файлов рекомендуется отключать автоматическое определение типов с помощью 'VariableTypes' и задавать их вручную.
Работа с ячейковыми массивами при передаче разнородных данных

Ячейковые массивы в MATLAB предназначены для хранения элементов разных типов в одной структуре. Это особенно полезно при необходимости передачи данных, которые не могут быть представлены в виде одномерного или многомерного числового массива.
Создание ячейкового массива выполняется с помощью фигурных скобок: C = {1, ‘текст’, [1 2 3], struct(‘a’, 5)}. Здесь в одной переменной хранятся число, строка, вектор и структура. Такой подход исключает необходимость предварительного преобразования всех элементов к общему типу.
Доступ к элементам осуществляется через фигурные скобки: значение = C{2}. При этом C(2) возвращает саму ячейку как объект, а не её содержимое. Это важно при передаче ячеек между функциями, где требуется сохранить тип упаковки данных.
Для хранения входных параметров функций с переменной структурой данных удобно использовать varargin, который по умолчанию является ячейковым массивом. Это позволяет принимать аргументы разного типа и количества без дополнительных проверок на соответствие формату.
Ячейковые массивы применимы при построении гетерогенных коллекций. Например, в графических интерфейсах элементы интерфейса могут храниться в одном массиве, независимо от их класса: controls = {uicontrol(‘Style’,’edit’), axes, uitable}. Это упрощает обработку и обновление элементов по индексу.
При работе с большими объёмами разнородной информации имеет смысл использовать cellfun или cell2mat для векторизации обработки. Однако cell2mat применим только при наличии однородных числовых массивов в ячейках. Иначе потребуется предварительная фильтрация данных.
Для избежания ошибок при копировании или передаче ячеек между рабочими областями рекомендуется проверять содержимое функцией iscell и уточнять типы вложенных объектов через class или isa.
Использование структур для хранения связанных данных
В MATLAB структуры применяются для группировки разнородной информации, относящейся к одному объекту. Каждое поле структуры может содержать данные любого типа: числа, строки, массивы, ячейки, другие структуры. Это позволяет хранить связанные данные в едином контейнере без необходимости использования отдельных переменных.
Создание структуры возможно вручную или с помощью функций. Пример ручного создания:
student.name = 'Иванов';
student.age = 21;
student.grades = [85 92 78];
Для инициализации массива структур используют функцию struct:
group = struct('name', {'Иванов', 'Петров'}, ...
'age', {21, 22}, ...
'grades', {[85 92 78], [88 90 81]});
Обращение к полям осуществляется через точечную нотацию:
avg = mean(group(2).grades);
Для массовой обработки используют функции arrayfun или цикл for:
ages = arrayfun(@(s) s.age, group);
Структуры удобно применять при чтении данных из файлов. Например, функция readstruct позволяет загружать JSON-файл в структуру:
data = readstruct('data.json');
При передаче данных между функциями структура используется как контейнер с параметрами. Это повышает читаемость кода и упрощает поддержку.
Для вложенности поддерживается создание структур в структурах:
student.address.city = 'Москва';
student.address.zip = '101000';
Чтобы получить список всех полей структуры, применяют функцию fieldnames:
fields = fieldnames(student);
Структуры в MATLAB – удобный способ хранения и обработки данных с различной природой, логически объединённых в рамках одной сущности.
Экспорт числовых массивов в формат CSV
Для сохранения числовых массивов из MATLAB в CSV-файл применяется функция writematrix. Она поддерживает как двумерные массивы типа double, так и логические матрицы. Файл создаётся в текстовом формате с разделителями, по умолчанию используется запятая.
- Чтобы сохранить матрицу
Aв файлdata.csv, используйте команду:writematrix(A, 'data.csv'); - Для указания другого разделителя добавьте параметр
'Delimiter':writematrix(A, 'data.csv', 'Delimiter', ';'); - Если требуется экспортировать только часть массива, например, первые 100 строк:
writematrix(A(1:100, :), 'subset.csv'); - При наличии
NaNв данных, они записываются как пустые ячейки. Чтобы задать конкретное значение для таких случаев, используйте'MissingValue':writematrix(A, 'data.csv', 'MissingValue', '0');
Если необходимо добавить заголовки столбцов, используйте writecell или writetable с предварительной конвертацией массива в таблицу:
- Создание таблицы:
T = array2table(A, 'VariableNames', {'X1','X2','X3'}); - Экспорт таблицы в CSV:
writetable(T, 'table.csv');
Для управления кодировкой файла можно указать дополнительный параметр:
writematrix(A, 'data.csv', 'Encoding', 'UTF-8');
Путь к файлу может быть абсолютным или относительным. Поддерживается экспорт в каталоги с правами на запись. При перезаписи файл автоматически заменяется без предупреждения.
Представление данных с временными метками с помощью timetable

Тип данных timetable в MATLAB используется для хранения и обработки данных, привязанных ко времени. Каждой строке таблицы соответствует уникальное значение времени, представленное объектом datetime или duration.
Создание timetable осуществляется с помощью команды timetable(). Например:
TT = timetable(datetime(2023,1,1:5)', [10; 20; 30; 40; 50], 'VariableNames', {'Температура'});
Для сортировки строк по времени используется sortrows(TT). Чтобы изменить интервал или выровнять данные по заданной частоте, применяется retime(). Например, агрегирование по среднему значению за день: retime(TT, 'daily', 'mean').
Синхронизация нескольких timetable выполняется с помощью synchronize(), что удобно при сравнении данных из разных источников. Поддерживается выравнивание по общей временной сетке и задание способа агрегации, например: synchronize(TT1, TT2, 'union', 'mean').
Фильтрация по времени осуществляется через логические условия: TT(TT.Time >= datetime(2023,1,2) & TT.Time <= datetime(2023,1,4), :). Это позволяет извлекать подмножества данных для анализа определённых периодов.
Для хранения в файле рекомендуется использовать формат .mat, чтобы сохранить точность временных меток. Запись выполняется с помощью save filename TT, загрузка – через load filename.
При работе с пропущенными временными значениями можно использовать isnat() и функции интерполяции: fillmissing(TT, 'linear').
Формат timetable обеспечивает поддержку временной оси в графиках. Для построения графика: plot(TT.Time, TT.Температура).
Обработка и визуализация данных из Excel-файлов

Для загрузки данных из Excel-файлов в MATLAB используется функция readtable. Она автоматически определяет типы данных и имена столбцов. Пример загрузки:
T = readtable('данные.xlsx', 'Sheet', 'Лист1');
Если требуется загрузить только часть данных, указывается диапазон:
T = readtable('данные.xlsx', 'Range', 'B2:E100');
Функция readmatrix применима для числовых массивов без заголовков:
M = readmatrix('данные.xlsx');
Для предварительного анализа удобно использовать summary, head и логические фильтры. Например:
subset = T(T.Показатель > 100, :);
Для визуализации используют plot, bar, scatter и heatmap. График зависимости:
plot(T.Время, T.Значение);
Цветовую карту можно построить при помощи:
heatmap(T, 'Параметр1', 'Параметр2', 'ColorVariable', 'Интенсивность');
При работе с датами рекомендуется преобразовать столбец к формату datetime:
T.Дата = datetime(T.Дата, 'InputFormat', 'dd.MM.yyyy');
Анализ временных рядов ведётся через timetable:
TT = table2timetable(T, 'RowTimes', T.Дата);
Функции retime, synchronize и movmean позволяют агрегировать и сглаживать данные:
TT_avg = retime(TT, 'daily', 'mean');
Для экспорта результата в Excel используется writetable:
writetable(T, 'результат.xlsx', 'Sheet', 'Итоги');
