Mоделирование процессов и систем в Matlab (966709), страница 25
Текст из файла (страница 25)
1250 0 2. 2500 0 с5 12 0 2.0000 2.3125 2.5000 О 0 2. 3750 2. 5525 О 0 Такой результат ни в коей мере не отражает записанные исходные данные. Запись и чтение текстовых файлов Текстовые файлы данных отличаются от бинарных прежде всего тем, что информация в них содержится в виде закодированных текстовых символов, то есть в символьном виде. Отсюда и название этих файлов. В число записываемых символов входят и управляющие символы, такие как символы окончания строки, перевода каретки, абзаца и др. ~пятому в текстовые файлы записываются те данные, которые образуют сформированный текстовый фрагмент.
Текстовые файлы пригодны и для записи чисел, представленных в виде символов. В этой книге уже шла речь о символьном представлении чисел в МАТЕАВ, когда мы рассказывали, как производится вывод чисел в командное окно. Напомним, что в МАТ1.АВ существуют такие форматы символьного представления чисел: Ятогс, Ятог( Е, 31)ог( О, [лпя, [я)пя Е, [лпя О, Ннс, Вал1«, Р!пз и Вас[она!. Остановимся прежде всего на записи и чтении числовых данных. Запись данных в текстовый файл осуществляется с помощью функции Гргт пгс Обращаться к ней следует таким образом: гргтп«Г('<иня файла>'.'строка„управляових синволоа'.ч'30>) Здесь <иня файла> — нмя файла, в который записываются данные; <ГВВ> — перечень записываемых величин (онн должны быть заданы (определены) до открытия файла, предназначенного для записи).
Строка управляющих символов (она 1Зг Урок 3 ° МАТТАВ и другие приложения должна быть помещена между апострофами) содержит информацию о том, в каком формате будут записываться данные, указанные в <ПЗВ>. Она может содержать помимо управляющих обычные символы. В атом случае символы будут помещены между записываемыми данными. К управляющим символам относятся следующие: О 37 — спецификатор, означающий, что очередная переменная, подлежащая записи в файл, будет представлена как действительное число в формате с фиксированной десятичной точкой (между символами $ и 7 могут быть записаны два целых числа и разделяющая их точка; первое число задает количество символов для записи числа, второе — количество символов после десятичной точки); О»д — спецификатор, осуществляющий запись числа в формате с плавающей десятичной точкой; О хз — спецификатор, который осуществляет запись очередной символьной пе- ременной; О управляющие последовательности символов, имеющие следующие значения: ° Тп — конец строки, перевести каретку на следующую строку; ° 11 — вставить горизонтальную табуляцию; ° 1г — перевести каретку на начало строки; ° 1Ь вЂ” возвратиться на один символ; ° г 17 — перейти к новой странице; ° 1 или ' ' — поставить знак апострофа; ° 33 — поставить знак процента.
Приведем несколько примеров. Рассмотрим вначале запись вектора. Сформируем вектор из четырех элементов. » у Трц 1.457е-17. -0.312557. 5.089е41 Ч - 3.1415е+000 1.4570е-017 -3,1257е-001 5.0890е+004 Запишем этот вектор в текстовый файл в формате с фиксированной десятичной точкой. ТТ - Тореп1'Текг1дкг'.'и'1 Грг1птт(ГТ. 17,71; Тс1ове(ГТ1 Результат записи теперь можно просмотреть, вызвав файл Тех11.Гхс с помощью текстового редактора Блокнот (рис.
3.4). Рис. 3.4. Компоненты вектора в текстовом файле Техг1.скс Как видим, все числа записаны подряд, без разделения, причем второе число представлено как О. Использование файлов данных в МАТТАВ Теперь вставим по трн пробела между числами. ГТ - Горепртех12.тхт'.'и'): Грг)птт1ЕТ.'тт ',Ч): тс1озе1ГТ).- В результате получим файл Тех12.Ьй в таком виде, как показано на рис. 3.5. Рис. 3.5.
Компоненты вектора разделены пробелами Тот же вектор запишем в файл ТехШхт, пользуясь спецификатором Фд. Гт - торепртехСЗ яхт'.'и'); ТршпСТ1Ет.'19 '.9); Гс1озе(ГТ): На рис. 3.6 показан результат. В отличие от предыдущих записей в формате с фиксированной точкой, в данном случае второй элемент вектора отображен верно. Поэтому применение спецнфикатора Зд при записи чисел в текстовый файл всегда является предпочтительным. Рис. З.б. Компоненты числового вентора в формате с плавающей точкой Перейдем к записи в текстовый файл чисвовой матрицы. Сформируем матрицу: » А Т1 -1.04е-28 7.8е45: -8.1234е-б 6.089 рт: б -1098 ЗЯ А 1 -1.
04е-028 7. Ве+045 -8.1234е-006 6.089 3.1416 6 -1098 35 Запишем ее в текстовый файл ТехФб.тхТ: Ет - тореп1 тех14. С С . н ); Грг!птттГТ,'39 ',А): Тс)озе(ЕТ): Элементы матрзщы в этом случае записываются в одну строку последовательно по столбцам (рис. 3.7).
134 Урок 3 ° МАТ(АВ и другие приложении Рис. 3.7. Представление числовой иатрицы в фориате с плавающей точкой Чтение данных из текстового файла может быть осуществлено с помощью одной из трех функций: Тдег), Тдегз или Тзсапб При обращении к функции Тдег) вида вгг - тдег)(т)6) создается строка, состоящая из символов текстового файла данных с идентификатором (т6, при этом символ конца строки удаляется. Если обратиться к функции гдехз следующим образом: вгг - (дега(г!6). то в результате будет сформирована строка, состоящая из символов текстового файла данных с идентификатором Тт6, при этом символ конца строки сохраняется. Функцию Тзсапг вызовем в таком виде: втг - Гасан(((16. (огиа1 лтте) Она осуществляет считывание из файла того количества данных, которое указано в параметре з1хе, преобразует данные из символьного в иной формат (например, числовой) в соответствии с параметром Тогяаг и присваивает полученные значения элементам матрицы А.
Параметр зтхе, задаваемый в виде (в.п), где в и и — целые положительные числа, определяет соответственно количество строк и столбцов формируемой матрицы А, Параметр Тогва1 должен быть строкой символов (а значит, должен быть помещен между апострофами). В число этих символов могут входить обычные символы, специфнкаторы и управляющие последовательности символов, аналогичные упомянутым при описании функции Трг)п1й Отличие заключается лишь в том, что теперь эти спецификаторы указывают количество символов, считываемых из файла, формат, в котором они считываются, и тип данных, в который преобразуются считанные символы (тип элементов матрицы А). Наиболее удобной для считывания числовых данных является функция тзсапт— единственная из функций считывания, формируюпьтя числовые данные непосредственно в формате МАТ1.АВ. Рассмотрим на примерах, как осуществляется воспроизведение записанных в файл данных при разных способах чтения.
Прежде всего произведем чтение файла Техг1Лхг с использованием функции Тзсапг. Напомним, что запись в этот файл производилась без разделителей между числами. Такой же формат применим и для чтения данных. » ГГ (орел('Теле1.тле'.'г'): » Упг»г - (»сап((ГТ. 'Хт'.11.41): » (с)о»е(ГТ) » Упот Чпоч 3.1416 0 -0.31257 0 135 Использование файлов данных в МАТ).АВ В результате получаем вектор, в котором неверно отображено не только второе число (чего следовало ожидать, так как оно не записалось в текстовый файл (см. рис. ЗА)), но и четвертое, которое было правильно записано в файл.
Картина меняется, если при записи между отдельными числами ставится какой- либо разделительный символ. Например, при записи вектора в файл Тех12Лхс таким символом был пробел. Прочитаем вектор из этого файла, используя тот же разделитель. » ГТ ЧорепСТехс2.схз'.'г'); » Ч1поч Гзсапг1РТ. 'ХГ '. Г1.4)): » Фс)озе(ГТ): » Ч)поч Ч1поч " 3.1416 0 -0.31257 50890 Теперь четвертый элемент также считан верно. Запись в файл Техтз.гхз была осуществлена в формате д, и все числа в нем отражены без искажений. Считаем данные из этого файла в том же формате с тем же разделителем между числами. » ГТ ГорепСТехзз.зхт', 'г'); ъ Ч2поч Гзсапт1)Т.'Хд '.Г1,4)): » Гс) озе1)Т): » Ч2поч У2поч - 3.1416 1.457е-017 -0.31257 50890 Получается результат, в котором все числа отображены верно.
Считаем матрицу А иэ файла Техс4.)хс в том же формате, в котором она была запи- сана в этот файл. » ЧТ - Горепптехза.тхз'.'г'): » Апач Чзсапт157.'Хд '.13.3)): » Тс)озе15Т): » Апоч Агач 1 -1.04е-028 7.Во~045 -8.1234е-006 6.089 3.1416 6 -1098 35 В результате получаем матрицу 8, которая полностью совпадает с исходной мат- рицей А. Следует отметить, что при записи и чтении числовых массивов в текстовых файлах целесообразно использовать спецификатор Хд и функцию Тзсапб Это позволит избежать возможных искажений чисел. Необходимо также отделять одно число от другого каким-либо разделительным символом. При ггении числовых массивов нужно применять те же разделительные символы, что были применены в функции Трг)' пХЧ при их записи в файл.
136 Урок 3 е ИАТИВ и другие приложении Вопросы для самопроверки 1. Какие команды операционной среды можно выполнить в командном окне МАТЮКАВ 2 2. Что представляет собой М-книга2 3. Как, находясь в текстовом редакторе Юогб, можно осуществлять расчеты и строить графики, используя МАТ1АВ? 4.
Какие типы файлов данных вы можете назвать и чем они отличаются друг от друга 2 5. Какие средства используются в МАТ1 АВ для записи информации в бинарные файлы данных и чтения информации из них2 6. Какие средства предусмотрены в МАТ1АВ для записи информации в текстовые файлы данных и чтения информации из них2 2.