Как в матлаб загрузить данные из файла excel
Интегрирование MatLab и Excel позволяет пользователю Excel обращаться к многочисленным функциям MatLab для обработки данных, различных вычислений и визуализации результата. Надстройка excllink.xla реализует данное расширение возможностей Excel. Для связи MatLab и Excel определены специальные функции.
Конфигурирование Excel
Перед тем как настраивать Excel на совместную работу с MatLab, следует убедиться, что Excel Link входит в установленную версию MatLab. В подкаталоге exclink основного каталога MatLab или подкаталога toolbox должен находиться файл с надстройкой excllink.xla . Запустите Excel и в меню Tools выберите пункт Add-ins . Откроется диалоговое окно, содержащее информацию о доступных в данный момент надстройках. Используя кнопку Browse , укажите путь к файлу excllink.xla . В списке надстроек диалогового окна появится строка Excel Link 2.0 for use with MatLab с установленным флагом. Нажмите OK , требуемая надстройка добавлена в Excel.
Обратите внимание, что в Excel теперь присутствует панель инструментов Excel Link , содержащая три кнопки: putmatrix , getmatrix , evalstring . Эти кнопки реализуют основные действия, требуемые для осуществления взаимосвязи между Excel и MatLab — обмен матричными данными, и выполнение команд MatLab из среды Excel. При повторных запусках Excel надстройка excllink.xla подключается автоматически.
Согласованная работа Excel и MatLab требует еще нескольких установок, которые приняты в Excel по умолчанию (но могут быть изменены). В меню Tools перейдите к пункту Options , открывается диалоговое окно Options . Выберите вкладку General и убедитесь, что флаг R1C1 reference style выключен, т.е. ячейки нумеруются A1 , A2 и т.д. На вкладке Edit должен быть установлен флаг Move selection after Enter .
Обмен данными между MatLab и Excel
Запустите Excel, проверьте, что проделаны все необходимые настройки так, как описано в предыдущем разделе (MatLab должен быть закрыт). Введите в ячейки с A1 по C3 матрицу, для отделения десятичных знаков используйте точку в соответствии с требованиями Excel.
Выделите на листе данные ячейки и нажмите кнопку putmatrix , появляется окно Excel с предупреждением о том, что MatLab не запущен. Нажмите OK , дождитесь открытия MatLab.
Появляется диалоговое окно Excel со строкой ввода, предназначенной для определения имени переменной рабочей среды MatLab, в которую следует экспортировать данные из выделенных ячеек Excel. Введите к примеру, М и закройте окно при помощи кнопки OK . Перейдите к командному окну MatLab и убедитесь, что в рабочей среде создалась переменная М , содержащая массив три на три:
Проделайте некоторые операции в MatLab с матрицей М , например, обратите ее.
Вызов inv для обращения матрицы, как и любой другой команды MatLab можно осуществить прямо из Excel. Нажатие на кнопку evalstring , расположенную на панели Excel Link , приводит к появлению диалогового окна, в строке ввода которого следует набрать команду MatLab
Результат аналогичен полученному при выполнении команды в среде MatLab.
Вернитесь в Excel, сделайте текущей ячейку A5 и нажмите кнопку getmatrix . Появляется диалоговое окно со строкой ввода, в которой требуется ввести имя переменной, импортируемой в Excel. В данном случае такой переменной является IM . Нажмите OK , в ячейки с A5 по A7 введены элементы обратной матрицы.
Итак, для экспорта матрицы в MatLab следует выделить подходящие ячейки листа Excel, а для импорта достаточно указать одну ячейку, которая будет являться верхним левым элементом импортируемого массива. Остальные элементы запишутся в ячейки листа согласно размерам массива, переписывая содержащиеся в них данные, поэтому следует соблюдать осторожность при импорте массивов.
Вышеописанный подход является самым простым способом обмена информацией между приложениями — исходные данные содержатся в Excel, затем экспортируются в MatLab, обрабатываются там некоторым образом и результат импортируется в Excel. Пользователь переносит данные при помощи кнопок панели инструментов Excel Link . Информация может быть представлена в виде матрицы, т.е. прямоугольной области рабочего листа. Ячейки, расположенные в строку или столбец, экспортируются, соответственно, в вектор ы -строки и вектор ы -столбцы MatLab. Аналогично происходит и импорт векторов-строк и векторов-столбцов в Excel.
Функция dlmread (чтение из текстовых файлов) предназначена для чтения матриц из текстовых файлов. Первый аргумент функции – имя файла. Результат записывается в матрицу.
Вторым аргументом можно явно указать разделитель чисел в файле, например ‘,’
Чтобы узнать размер прочитанной матрицы по каждому измерению используется функция size, которая возвращает массив двух значений: количество прочитанных строк и столбцов:
Чтобы узнать общее число прочитанных чисел можно перемножив размеры матрицы, используя функцию prod
или использовать функцию numel (количество всех элементов)
Третий и четвертый аргумент dlmread смещение строки и столбца, начиная с которых нужно начинать считывать данные из файла. Например, чтобы пропустить 1 строку и один столбец, необходимо вызвать функцию со следующими дополнительными параметрами
Чтение данных из Excel файлов
Для чтение данных из XLS файлов используется функция xlsread
Функция позволяет импортировать таблицы из файлов различных форматов. В отличие от результата работы функции xlsread результатом работы функции readtable является объект table, который содержит дополнительную информацию о таблице: об именах столбцов, строк. Без дополнительных указаний функция readtable считает, что в первой строке таблицы записаны имена её столбцов.
В рабочем каталоге MATLAB находится xls-файл следующего на листе “Лист1” которого находятся следующие данные:
Результатом работы функции readtable будет таблица (объект table)
Первая строка в первом столбце таблицы не содержит никаких значений (ячейка А1 пустая), поэтому первому столбцу было присвоено имя автоматически Var1. Второй и третий столбцы в таблице имеют имена COL1 и COL2 соответственно. Функция readtable рассматривает эти значения как имена столбцов. Если такое поведение функции readtable нежелательно, то можно передать функции значение ‘ReadVariableNames’ равное false
Видно, что в этом случае, поскольку столбцы исходной таблицы в таком представлении содержат неоднородные данные (и числа и строки), все значения в столбцах рассматриваются как строковые без попыток их преобразования в числовые значения. Для корректного чтения данных из таблицы ‘Книга1.xlsx’ необходимо использовать поведение функции readtable по умолчанию, т.е.
В этом случае можно получить содержимое столбца, используя его имя. Например data.COL1 представляет собой матрицу столбец
Столбец data.Var1 это матрица ячеек, содержащая строковые значения
Список имен столбцов содержится в атрибуте (свойстве) таблицы data.VariableNames, которое считывается следующим образом
Для того, чтобы значения в первом столбце рассматривались как имена строк, необходимо использовать опцию ReadRowNames
Для чтения извлечения данных из строки по её имени используется следующий синтаксис
Результатом является объект типа table. Можно извлечь несколько строк по их именам, например так
Чтобы извлечь данные в виде матрицы необходимо использовать свойство таблицы Variables
Для исходной таблицы это свойство вернет все числовые значения в виде матрицы
num = xlsread( filename , sheet ) читает заданный рабочий лист.
num = xlsread( filename , xlRange ) чтения от заданной области первого рабочего листа в рабочей книге. Используйте синтаксис области значений Excel, такой как 'A1:C3' .
num = xlsread( filename , sheet , xlRange ) чтения из заданного рабочего листа и области значений.
Если вы не задаете все аргументы, используйте пустые символьные вектора, '' , как заполнители, например, num = xlsread(filename,'','','basic') .
[ num , txt , raw ] = xlsread( ___ ) дополнительно возвращает текстовые поля в массиве ячеек txt , и и числовые данные и текстовые данные в массиве ячеек raw , использование любого из входных параметров в предыдущих синтаксисах.
___ = xlsread( filename ,-1) открывает окно Excel, чтобы в интерактивном режиме выбрать данные. Выберите рабочий лист, перетащите мышью мышь в области значений, которую вы хотите и нажимаете OK. Этот синтаксис поддерживается только на компьютерах Windows с установленным программным обеспечением Microsoft Excel .
[ num , txt , raw , custom ] = xlsread( filename , sheet , xlRange ,'', processFcn ) , где processFcn указатель на функцию, чтения из электронной таблицы, processFcn вызовов на данных, и возвращает конечные результаты как числовые данные в массиве num . xlsread функция возвращает текстовые поля в массиве ячеек txt , и числовые данные и текстовые данные в массиве ячеек raw , и второй выход от processFcn в массиве custom . xlsread функция не изменяет данные, хранимые в электронной таблице. Этот синтаксис поддерживается только на компьютерах Windows с программным обеспечением Excel.
Примеры
Чтение рабочего листа в числовую матрицу
Создайте файл с именем Excel myExample.xlsx .
Sheet1 из myExample.xlsx содержит:
Считайте числовые данные из первого рабочего листа.
Чтение области значений ячеек
Считайте определенную область значений данных из файла Excel в предыдущем примере.
Чтение столбца
Считайте второй столбец из файла Excel в первом примере.
Для лучшей эффективности включайте номера строк в область значений, такие как 'B1:B3' .
Числовой запрос, текст и необработанные данные
Запросите числовые данные, текстовые данные и объединенные данные из файла Excel в первом примере.
Выполнение функции на рабочем листе
В Редакторе создайте функцию, чтобы обработать данные из рабочего листа. В этом случае установите значения вне области значений [0.2,0.8] к 0.2 или 0.8 .
В Командном окне добавьте случайные данные в myExample.xlsx .
Рабочий лист под названием MyData содержит значения в пределах от от 0 до 1.
Считайте данные из рабочего листа и сбросьте любые значения вне области значений [0.2,0.8] . Задайте имя листа, но используйте '' как заполнители для xlRange и 'basic' входные параметры.
Запрос пользовательского Вывода
Выполните функцию на рабочем листе и отобразите пользовательский индекс выход.
В Редакторе измените функциональный setMinMax от предыдущего примера, чтобы возвратить индексы измененных элементов (пользовательский выход).
Считайте данные из рабочего листа MyData , и запросите пользовательский индекс выход, idx .
filename FileName
вектор символов | строка
Имя файла в виде вектора символов или строки. Если вы не включаете расширение, xlsread поиски файла с указанным именем и поддерживаемым расширением Excel. xlsread может считать данные, сохраненные в файлах, которые в настоящее время открыты в Excel для Windows.
Пример: 'myFile.xlsx' или "myFile.xlsx"
Типы данных: char | string
sheet — Рабочий лист
вектор символов | представляет в виде строки | положительное целое число
Рабочий лист в виде одного из следующего:
Вектор символов или строка, которая содержит имя рабочего листа. Имя не может содержать двоеточие ( : ). Чтобы определить имена листов в файле электронной таблицы, используйте xlsfinfo . Для файлов XLS в basic режим, sheet является чувствительным к регистру.
Положительное целое число, которое указывает на индекс рабочего листа. Эта опция не поддерживается для файлов XLS в basic режим.
Типы данных: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
xlRange — Прямоугольная область значений
вектор символов | строка
Прямоугольная область значений в виде вектора символов или строки.
Задайте xlRange использование двух противостоящих углов, которые задают область, чтобы читать. Например, 'D2:H4' представляет прямоугольную область 3 на 5 между этими двумя углами D2 и H4 на рабочем листе. xlRange вход не является чувствительным к регистру, и использует стиль ссылки Excel A1 (см. справку Excel).
Выбор области значений не поддерживается при чтении файлов XLS в basic режим. В этом случае используйте '' вместо xlRange .
Если вы не задаете sheet , затем xlRange должен включать оба угла и символ двоеточия, даже для отдельной ячейки (такие как 'D2:D2' ). В противном случае, xlsread интерпретирует вход как имя рабочего листа (такое как 'sales' или 'D2' ).
Если вы задаете sheet , затем xlRange :
Не должен включать двоеточие и противоположный угол, чтобы описать отдельную ячейку.
Может относиться к именованной области значений, которую вы задали в файле Excel (см. справку Excel).
Когда заданный xlRange объединенные ячейки перекрытий:
На компьютерах Windows с Excel, xlsread расширяет область значений, чтобы включать все объединенные ячейки.
На компьютерах без Excel для Windows, xlsread возвращает данные для заданной области только, с пустым или NaN значения для объединенных ячеек.
Загружает данные в массив A из файла, обозначенного именем файла .
Загружает данные из системного буфера обмена, а не из файла.
A = importdata (___, delimiterIn)
Интерпретирует delimiterIn как разделитель столбцов в файле ASCII, имени файла или данных буфера обмена. Вы можете использовать delimiterIn с любым из входных аргументов в приведенных выше синтаксисах.
A = importdata (___, delimiterIn, headerlinesIn)
Загружает данные из файла ASCII, имени файла или буфера обмена, считывая числовые данные, начиная со строки headerlinesIn + 1 .
[A, delimiterOut, headerlinesOut] = importdata (___)
Возвращает обнаруженный символ разделителя для входного файла ASCII в delimiterOut и обнаруженное количество строк заголовка в headerlinesOut , используя любой из входных аргументов в предыдущих синтаксисах.
A = importdata (имя файла)
Загружает данные в массив A из файла, обозначенного именем файла .
Загружает данные из системного буфера обмена, а не из файла.
A = importdata (___, delimiterIn)
Интерпретирует delimiterIn как разделитель столбцов в файле ASCII, имени файла или данных буфера обмена. Вы можете использовать delimiterIn с любым из входных аргументов в приведенных выше синтаксисах.
A = importdata (___, delimiterIn, headerlinesIn)
Загружает данные из файла ASCII, имени файла или буфера обмена, считывая числовые данные, начиная со строки headerlinesIn + 1 .
[A, delimiterOut, headerlinesOut] = importdata (___)
Возвращает обнаруженный символ разделителя для входного файла ASCII в delimiterOut и обнаруженное количество строк заголовка в headerlinesOut , используя любой из входных аргументов в предыдущих синтаксисах.
filename = 'smile.jpg' ; A = importdata ( filename ); image ( A );Когда вы запускаете файл, MATLAB отображает файл изображения. Однако вы должны сохранить его в текущем каталоге.
Пример 2
В этом примере мы импортируем текстовый файл и указываем разделитель и заголовок столбца. Давайте создадим ASCII-файл, разделенный пробелами, с заголовками столбцов с именем weeklydata.txt .
Пример 3
В этом примере давайте импортируем данные из буфера обмена.
Математика проста
Низкоуровневый файловый ввод / вывод
Функция importdata является высокоуровневой функцией. Низкоуровневые функции ввода / вывода файлов в MATLAB позволяют максимально контролировать чтение или запись данных в файл. Однако эти функции нуждаются в более подробной информации о вашем файле для эффективной работы.
MATLAB предоставляет следующие функции для операций чтения и записи на уровне байтов или символов:
функция | Описание |
---|---|
fclose | Закройте один или все открытые файлы |
feof | Тест на конец файла |
FERROR | Информация об ошибках файлового ввода-вывода |
fgetl | Чтение строки из файла, удаление символов новой строки |
fgets | Читать строку из файла, сохраняя символы новой строки |
Еореп | Откройте файл или получите информацию об открытых файлах |
fprintf | Записать данные в текстовый файл |
Fread | Чтение данных из двоичного файла |
frewind | Переместить индикатор положения файла в начало открытого файла |
fscanf | Читать данные из текстового файла |
FSEEK | Переместить в указанную позицию в файле |
ftell | Положение в открытом файле |
FWRITE | Записать данные в двоичный файл |
Импорт текстовых файлов данных с низкоуровневым вводом / выводом
Функция fscanf читает отформатированные данные в текстовом или ASCII-файле.
Функции fgetl и fgets читают по одной строке файла за раз, где символ новой строки разделяет каждую строку.
Функция fread считывает поток данных на уровне байтов или битов.
Функция fscanf читает отформатированные данные в текстовом или ASCII-файле.
Функции fgetl и fgets читают по одной строке файла за раз, где символ новой строки разделяет каждую строку.
Функция fread считывает поток данных на уровне байтов или битов.
пример
У нас есть текстовый файл данных «myfile.txt», сохраненный в нашем рабочем каталоге. Файл хранит данные об осадках за три месяца; Июнь, июль и август за 2012 год.
Данные в myfile.txt содержат повторные наборы измерений времени, месяца и количества осадков в пяти местах. Данные заголовка хранят количество месяцев M; таким образом, у нас есть M наборов измерений.
Откройте файл с помощью функции fopen и получите идентификатор файла.
Опишите данные в файле с помощью спецификаторов формата , таких как « % s » для строки, « % d » для целого числа или « % f » для числа с плавающей запятой.
По умолчанию fscanf считывает данные в соответствии с нашим описанием формата, пока не найдет совпадения для данных или не достигнет конца файла. Здесь мы будем использовать цикл для чтения 3 наборов данных и каждый раз будем читать 7 строк и 5 столбцов.
Откройте файл с помощью функции fopen и получите идентификатор файла.
Опишите данные в файле с помощью спецификаторов формата , таких как « % s » для строки, « % d » для целого числа или « % f » для числа с плавающей запятой.
По умолчанию fscanf считывает данные в соответствии с нашим описанием формата, пока не найдет совпадения для данных или не достигнет конца файла. Здесь мы будем использовать цикл для чтения 3 наборов данных и каждый раз будем читать 7 строк и 5 столбцов.
Создайте файл сценария в MATLAB со следующим содержимым:
Запустите файл, и MATLAB отобразит файл изображения.
** Примечание. ** Файл изображения должен быть сохранен в текущем каталоге.
2. Импортировать текстовый файл
Содержимое текстового файла выглядит следующим образом:
Тестовый код выглядит следующим образом:
** Примечание: ** textdata читает файл заголовка n-строки, идентифицируемый headerlinesIn,colheadersЗдесьheaderlinesInПоследняя строка используется в качестве имени столбца.textdataВ дополнение кheaderlinesInКроме этого, каждая строка читается как строка, а не как разделенная.
3. Импортировать данные из буфера обмена
Скопируйте следующее в буфер обмена:
Процветающий, сильный, демократичный, цивилизованный, гармоничный
Создайте файл сценария в MATLAB со следующим содержимым:
Результаты следующие:
4. Сводка использования функции importdata
функция | объяснение |
---|---|
A = importdata(filename) | Загрузить данные из файла, представленного именем файла, в массив A |
A = importdata(’-pastespecial’) | Загружать данные из системного буфера обмена, а не из файла. |
A = importdata(___, delimiterIn) | Интерпретировать delimiterIn как разделитель столбцов в файле ASCII, имени файла или данных буфера обмена. Вы можете использовать delimiterIn с любым из входных параметров в приведенном выше синтаксисе. |
A = importdata(___, delimiterIn, headerlinesIn) | Загрузите данные из файла ASCII, имени файла или буфера обмена и прочитайте числовые данные, начиная с lineheaderlinesIn + 1. |
[A, delimiterOut, headerlinesOut] = importdata(___) | Возвращает обнаруженный символ разделителя в выходных данных разделителя и определяет количество строк заголовка, обнаруженных в headerlinesOut, используя любой из входных параметров в предыдущем синтаксисе. |
Интеллектуальная рекомендация
Краткое описание общих функций MPI
содержание 1, основная функция MPI 2, точка-точка функция связи 3, коллективная функция связи 1, основная функция MPI MPI_Init(&argc, &argv) Информировать системы MPI для выполнения всех необх.
Примечание 9: EL выражение
JVM память
концепция Виртуальная машина JVM управляет собственной памятью, которая разделяет память во многие блоки, наиболее распространенной для памяти стека и памяти кучи. 1 структура виртуальной машины JVM H.
Проблема сетевого запроса на Android 9.0
вЗапустите Android 9 (API Уровень 28) или вышеНа устройстве операционной системы Android, чтобы обеспечить безопасность пользовательских данных и устройств, использование по умолчанию для зашифрованно.
Учебная запись по Webpack (3) В статье рассказывается о создании webpack4.0.
предисловие Для изучения веб-пакета автор также предпринял много обходных путей. Есть много вещей, которые я хочу знать, но я не могу их найти. Автор поможет вам быстро начать работу. Цель этой статьи.
Читайте также: