Главная Длительная эволюция [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.0009 |