Главная  Длительная эволюция 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [ 70 ] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

Таким образом, элементами матрицы, полученной при чтении файла fileZ.val, являются как строки, так и числа. Ек:ли требуется строки "pointV и т.п. трактовать как символы, то это можно сделать при помощи функции ToExpression, которая как раз и преобразует свой аргумент-строку в выражение „Математики".

datal = MapAt[ToExpression[#]&:,data,

Table[{i,l},{i,3}]];

Head[datal[[l,l]]]

Symbol

К сожалению, у функции ReadList не существует опций, которые позволили бы напрямую считывать числовые данные, если в исходном файле они отделены друг от друга не пробелами, а запятыми. Однако подгрузка таким образом структурированных данных возможна, причем несколькими способами.

!!flle4.val

1,2,3 4,5,6

В данном случае можно поступить следующим образом:

data2 = ReadList["file4.var, {Number, Character}]

{{1,,}, {2,,}, {3,}, {4,,}, {5,,}, {%,EndOfFile}}

Данные считались парами, на первом месте у которых нужные числа, сопровождаемые запятыми, знаком "\п" перехода на новую строку и символом окончания файла. Извлечение чисел с сохранением матричной структуры теперь не представляет труда.

dataS = Partition[First/@data2,3]

{{1,2,3}, {4,5,6}}



Самый общий, хотя и весьма трудоемкий способ извлечения нужных данных из файла, - это воспользоваться функцией Read, которая подгружает из файла последовательно выражение за выражением. Если при этом что-то нужно пропустить, то следует прибегнуть к функции Skip.

!!flle5.val

first 1 second 100 last 300

Чтобы извлечь из файла только числа, открываем объект „Математики", который называется „входной поток".

stream = OpenReadpfileS.val"]

InputStream[file5.val, 31]

Далее выполняем последовательность команд:

S kip [s t ream, Word]

nl = Read[stream, Number];

S kip [st ream, Word]

n2 = Read[stream, Number];

Skip[stream,Word]

n3 = Read[stream, Number];

Close[stream]

Извлеченные таким образом числа можно затем поместить в список:

1= {п1,п2,пЗ} {1, 100, 300}

Запись данных в файлы в „Математике" не столь гибка, как чтение из файлов. Для записи выражений в файлы служат команды Put, PutAppend и Save. Команда Put[expr,"file"],



ИЛИ ВО ВХОДНОМ формате ехрг >> file, записывает выражение ехрг в файл file.

а = х-2 + у-3; а >> fllee.val !!filee.val

1-2 + 1,-3

Если файл file6.val содержал какую-либо другую информацию, то она при записи выражения а затирается. Чтобы этого не произошло, следует воспользоваться функцией PutAppend.

b = Sin[x + y]; b >>> filee.val !!flle6.val

1-2+ гЗ Sin[x + у]

Команда Save позволяет сохранить в файле правила преобразований, ассоциированные с символом или группой символов.

f[l] = 1; f[x ].- х/; х > 0; f[x ] := -х/; х < О

SavepflleT.var.f]

!!file7.val

/[1] = 1

Дх.] := х/; X > О /[х ] := -х/; X < О

Функция WriteString используется для записи строк в файлы. Использование этой функции предполагает предварительное открытие „выходного потока".

stream = OpenWrite["file8.val"]

OutputStreaTn[file8.val,]



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [ 70 ] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

0.0015