Импорт данных в MATLAB: эффективная загрузка внешних файлов
Импорт данных — загрузка из внешнего файла. Функция importdata поддерживает различные форматы. Имеет 5 форм вызова:
| № | Функция и описание |
|---|---|
| 1 | A = importdata(filename) — загрузка в массив A из файла |
| 2 | A = importdata('-pastespecial') — загрузка из буфера обмена |
| 3 | A = importdata(___, delimiterIn) — разделитель столбцов в ASCII/буфере |
| 4 | A = importdata(___, delimiterIn, headerlinesIn) — чтение числовых данных начиная со строки headerlinesIn+1 |
| 5 | [A, delimiterOut, headerlinesOut] = importdata(___) — возврат обнаруженного разделителя и числа заголовков |
Пример 1: загрузка изображения
filename = 'smile.jpg'; A = importdata(filename); image(A);
Файл должен быть в текущей директории.
Пример 2: текстовый файл с разделителем и заголовком
Файл weeklydata.txt (пробельный разделитель, 1 строка заголовка):
SunDay MonDay TuesDay WednesDay ThursDay FriDay SaturDay 95.01 76.21 61.54 40.57 55.79 70.28 81.53 73.11 45.65 79.19 93.55 75.29 69.87 74.68 ...
filename = 'weeklydata.txt';
delimiterIn = ' '; headerlinesIn = 1;
A = importdata(filename, delimiterIn, headerlinesIn);
for k = 1:7
disp(A.colheaders{1,k})
disp(A.data(:,k))
disp(' ')
end
Пример 3: импорт из буфера обмена
A = importdata('-pastespecial')
В буфере: Mathematics is simple → A = 'Mathematics is simple'
Низкоуровневый файловый ввод-вывод
importdata — высокоуровневая функция. Низкоуровневые функции дают полный контроль, но требуют детальной информации о файле.
| Функция | Описание |
|---|---|
| fclose | Закрыть открытые файлы |
| feof | Проверка конца файла |
| ferror | Информация об ошибках ввода-вывода |
| fgetl | Чтение строки (без перевода строки) |
| fgets | Чтение строки (с переводом строки) |
| fopen | Открыть файл, получить идентификатор |
| fprintf | Запись в текстовый файл |
| fread | Чтение из бинарного файла |
| frewind | Перемещение указателя в начало файла |
| fscanf | Чтение форматированных данных из текстового файла |
| fseek | Перемещение к указанной позиции |
| ftell | Текущая позиция в файле |
| fwrite | Запись в бинарный файл |
Импорт текстовых файлов низкоуровневым I/O
fscanf— чтение форматированных данныхfgetl,fgets— построчное чтениеfread— побайтовое/побитовое чтение
Пример: сложный текстовый файл с данными о дожде
Файл myfile.txt содержит заголовок с числом месяцев M, затем M наборов из 7 строк и 5 столбцов измерений.
filename = '/data/myfile.txt'; rows = 7; cols = 5;
fid = fopen(filename);
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
for n = 1:M
mydata(n).time = fscanf(fid, '%s', 1);
mydata(n).month = fscanf(fid, '%s', 1);
mydata(n).raindata = fscanf(fid, '%f', [rows, cols])';
end
for n = 1:M
disp(mydata(n).time), disp(mydata(n).month)
disp(mydata(n).raindata)
end
fclose(fid);
Используются спецификаторы формата: %s (строка), %d (целое), %f (float), * для пропуска полей.
MATLAB
- Azure File Storage: руководство для начинающих по безопасному, масштабируемому облачному хранилищу
- MATLAB: Комплексный обзор ведущей среды численных вычислений
- Типы данных в MATLAB: Полное руководство с примерами
- Операторы MATLAB: Арифметические, логические, битовые и операции над множествами
- Матрицы в MATLAB: Создание, индексация, удаление строк/столбцов и операции
- MATLAB: Мастерство работы с многомерными и специальными массивами
- Оператор двоеточия в MATLAB: создание векторов и эффективная итерация
- Числа в MATLAB: типы, хранение и преобразование
- Строки в MATLAB: создание, манипуляции и функции
- Функции в MATLAB: определение, рабочая область, входные и выходные аргументы