import::readdata

Считайте данные из ASCII-файла

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

import::readdata(filename | n, <separator>, <NonNested>)

Описание

import::readdata(filename) считывает данные в файле filename. Данные о файле, разделенные пробелом, рассматриваются как различные элементы данных. Результатом является список списков, каждого подсписка, представляющего одну линию файла.

import::readdata(filename, separator) считывает данные в файле filename. Данные о файле разделяются символьным separator рассматриваются как различные элементы данных. Результатом является список списков, каждого подсписка, представляющего одну линию файла.

import::readdata(filename, separator, NonNested) считывает данные в файле filename как одна запись данных. Данные о файле разделяются символьным separator рассматриваются как различные элементы данных. Результатом является невложенный список плоскости, содержащий данные всех линий файла.

import::readdata(filename) поиски файла в различных директориях:

  • Во-первых, имя интерпретировано как имя файла прямого доступа: filename конкатенирован к каждой директории, данной переменной окружения READPATH.

  • Затем имя файла интерпретировано как абсолютный путь.

  • Затем имя файла интерпретировано относительно “рабочей директории”.

  • Наконец, имя файла конкатенировано к директории библиотеки.

Если файл может быть открыт с одним из этого, называет, то файл читается.

Обратите внимание на то, что значение “рабочей директории” зависит от операционной системы. В системах Microsoft® Windows® и в Apple Mac OS X систем, “рабочая директория” является папкой, где MuPAD® установлен. В системах UNIX® это - текущая рабочая директория, в которой был запущен MuPAD; когда запущено с меню или настольного элемента, это обычно - корневой каталог пользователя.

Диафрагма пути (“/”) вставляется по мере необходимости при конкатенации данного пути и filename.

Если файл задан именем файла, нет никакой потребности открыть или закрыть файл через fopen и fclose, соответственно. Это сделано автоматически import::readdata.

Вместо имени файла, также дескриптор файла файла, открытого через fopen может использоваться. Обратите внимание на то, что файл, должно быть, был открыт в Read режим fopen. Если дескриптор файла используется, соответствующий файл не закрывается автоматически, но должен быть закрыт пользователем через fclose.

Файлы сжаты gzip или совместимая программа (имеющий имя, заканчивающееся в “.gz”), распаковываются автоматически после чтения.

Все элементы данных в файле интерпретированы, когда MuPAD возражает. Если элемент данных не может быть интерпретирован как объект MuPAD, он импортируется как строка MuPAD. В противном случае соответствующий объект MuPAD вставляется в список, возвращенный import::readdata.

Примечание

Обратите внимание на то, что объекты MuPAD, соответствующие элементам данных, оценены после чтения. Например, элемент данных “sin (0)” в файле оценен и импортирован как целое число MuPAD 0. Остерегайтесь: символы “;” и “:” имейте определенное значение если не заданный как диафрагмы в import::readdata: они разделяют команды MuPAD. Следовательно, если элемент данных чтения содержит одно из этого, изображает, MuPAD интерпретирует этот элемент данных как последовательность операторов и, после оценки, возвращает значение последнего оператора как объект MuPAD, соответствующий элементу данных. См. Пример 3.

В отличие от finput, элементы данных в файле не должны быть закончены двоеточием или точкой с запятой.

Проигнорированы пустые линии в файле.

Примеры

Пример 1

Мы хотим считать статистические данные в сеанс MuPAD, чтобы протестировать корреляцию двух выборок данных. Примите что файл “datafile” содержит следующие два столбца данных о ASCII (каждый столбец, представляющий выборку данных):

      0.12    0.2534
      2.324   5.72
      1.02    2.2232
      4.02    7.321
      7.4    14.9
     -7.4   -15.1

import::readdata возвращает следующий список, представляющий данные в файле:

data := import::readdata("datafile")

Структура данных stats::sample преобразует этот вложенный список в два столбца данных:

s := stats::sample(data)
 0.12  0.2534
2.324    5.72
 1.02  2.2232
 4.02   7.321
  7.4    14.9
 -7.4   -15.1

Следующий расчет показывает, что существует очень сильная корреляция между данными в первом столбце и данными во втором столбце:

stats::correlation(s, 1, 2)

Если данные в файле, как предполагается, представляют одну выборку (запись данных), мы можем проигнорировать то, что числа располагаются на нескольких линиях. С NonNested, данные считаны как одна выборка:

data := import::readdata("datafile", NonNested)

Среднее и стандартное отклонение данных:

stats::mean(data), stats::stdev(data)

delete data, s:

Пример 2

Давайте примем что файл “datafile” содержит следующие данные о ASCII:

      1 | 2   | 3

      4| 5 | 6.65786
      7| 8 |9| 5 | "ahfjd" | ab100|-23

Мы задаем диафрагму данных "|" для чтения данных:

import::readdata("datafile", "|")

Обратите внимание на то, что пробел в элементах данных, а также пустой линии в файле проигнорирован.

Пример 3

Мы сначала создаем файлы данных ASCII, которые будут использоваться в этом примере. Мы вспоминаем, что градусы Цельсия x являются градусами по Фаренгейту. Во-первых, два файла данных создаются содержащий соответствующие температуры из - 5 градусов Цельсия к 30 градусам Цельсия на шагах 5 градусов Цельсия:

n1 := fopen(Text, "data1", Write):
n2 := fopen(Text, "data2", Write):
for celsius from -5 to 20 step 5 do 
  fahrenheit := 9/5*celsius + 32:
  fprint(Unquoted, n1, celsius, " ", fahrenheit):
  fprint(n2, celsius, fahrenheit):
end_for:
fclose(n1):
fclose(n2):

Файл “data1” теперь содержит следующие данные:

-5 23
0 32
5 41
10 50
15 59
20 68

Файл “data2” содержит следующие данные:

-5:23:
0:32:
5:41:
10:50:
15:59:
20:68:

Теперь мы импортируем данные:

import::readdata("data1")

Чтение данных из файла “data2” дает к неожиданному результату:

import::readdata("data2")

Что пошло не так, как надо? Помните, что диафрагма данных по умолчанию является пробелом. Следовательно, MuPAD читает выражение -5:23: как единственный элемент данных в первой линии. Когда MuPAD оценивает этот элемент данных, он интерпретирует его как последовательность двух операторов MuPAD. Результатом последовательности оператора является результат последнего из этих двух операторов, т.е. номер 23. Это - первая данная величина в получившемся списке. Для получения данных, как желаемый, должна быть задана соответствующая диафрагма. Файл “data2” должен быть считан можно следующим образом:

import::readdata("data2", ":")

Мы используем опцию NonNested получить простой список, содержащий все элементы данных, не помещая каждую запись (линия) в собственный подсписок:

import::readdata("data2", ":", NonNested)

delete n1, n2:

Пример 4

Здесь мы видим, что данные оценены после чтения. Во-первых, мы создаем файл данных:

n1 := fopen(Text, "data3", Write) :
fprint(Unquoted, n1, a, " 12 ", b):
fclose(n1):

Теперь данные считаны:

import::readdata("data3")

Если a и b имейте значения, мы добираемся:

a := 3:  b := 34:  import::readdata("data3")

delete n1, a, b:

Пример 5

Во-первых, мы создаем файл данных со случайными данными с плавающей точкой что разделенный знаками пробела:

n := fopen(Text, "data4", Write):
for i from 1 to 3 do
    fprint(Unquoted, n, (frandom(), " ") $ j = 1..4);
end_for;
fclose(n):

Этот файл вновь открыт для чтения с fopen:

n := fopen(Text, "data4", Read)

Дескриптор файла n возвращенный fopen может быть передан import::readdata:

import::readdata(n)

Обратите внимание, однако, что файл был открыт явным образом пользователем с fopen и не закрывается автоматически import::readdata. Следовательно, пользователь, как предполагается, закрывает файл явным образом через fclose:

fclose(n):
delete i, n:

Параметры

filename

Имя файла: непустая строка символов

n

Дескриптор файла обеспечивается fopen: положительное целое число

separator

Диафрагма между элементами данных: символьная строка длины 1 (отдельный символ). Диафрагма по умолчанию является пробелом.

Опции

NonNested

Возвратите все данные о файле как одну запись данных в невложенном списке. Данные всех линий упорядочены последовательно в этом списке.

Возвращаемые значения

Вложенный список списков. Подсписки содержат данные indiviual линий. С опцией NonNested, простой список, содержащий все элементы данных от каждой линии в файле.

Смотрите также

Функции MuPAD