Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Вывод информации в файл

Читайте также:
  1. II. Корыстные источники информации
  2. III. ВЫВОДЫ
  3. III. ВЫВОДЫ
  4. IV. Выводы и предложения.
  5. PCI DSS v 2.0октябрь 2010 г.- стандарт защиты информации в индустрии платежных карт
  6. Аппаратура первичной обработки информации (АПОИ)
  7. Архивирование данных об источниках информации

Как уже было сказано выше, если оператор присваивания не завершается символом «;» (точка с запятой), то результаты его выполнения выводятся в командное окно. Вывод же информации в текстовый файл производится при помощи функции fprintf, при этом файл, естественно, должен быть предварительно открыт. Для этого предназначена функция fopen, позволяющая открыть существующий или создать новый файл. Имя файла в этой функции указывается первым входным аргументом в апострофах. Второй аргумент задает способ доступа к файлу, он может принимать следующие значения:

§ 'rt' – файл открывается только для чтения;

§ 'rt+' – файл открывается для чтения и записи;

§ 'wt' – создаётся пустой файл только для записи;

§ 'wt+' – создаётся пустой файл для записи и чтения;

§ 'at' – файл открывается, а если его нет, то создаётся, только для добавления данных в его конец;

§ 'at+' – файл открывается, а если его нет, то создаётся, для добавления данных в конец файла и их чтения.

Выходным аргументом функции fopen является идентификатор (ссылочный или логический номер), присвоенный файлу, например

[Vx] = fopen('beep.m', 'rt');

Если файл beep.m открыть не удалось, то переменной Vx присваивается значение –1. Такая ошибка часто возникают из-за того, что Matlab не может найти открываемый файл. Поэтому следует указывать полное имя файла. В противном случае, при задании только имени файла и его расширения, Matlab производит поиск только в текущем каталоге и путях поиска, указанных в окне Current folder.

Функция fopen может быть вызвана и со вторым дополнительным выходным аргументом – строковой переменной с сообщением о результате открытия

[Vx,mes] = fopen('example.txt', 'wt');

В данном случае Vx – переменная, в которой возвращается ссылочный или логический номер, присвоенный файлу, mes – переменная, в которой формируется сообщение о результате открытия файла.

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

Добавление записи в текстовый файл осуществляется при помощи команды fprintf, вызванной с двумя входными аргументами – идентификатором файла и выражением с текстом записи, например, команда

fprintf(Vx, 'Текст выводимой строки.')

записывает запись «Текст выводимой строки.» в строку файла с идентификатором Vx, присвоенным ему при открытии. Последующая команда fprintf

fprintf(Vx, 'Ещё одна строка.')

выводит в файл запись «Ещё одна строка.» в ту же строку файла сразу за ранее выведенной записью.

Для вывода записи с новой строки следует добавить символ перевода строки «\n» в начало новой строки после апострофа:

fprintf(Vx, '\nЭтот текст с новой строки.')

В результате выполнения трех вышеперечисленных команд содержимое текстового файла станет следующим:

Текст выводимой строки. Еще одна строка.

Этот текст с новой строки.

Символ перевода строки «\n» можно разместить в конце записи, после которой текст должен начинаться с новой строки, например, последовательность команд

fprintf(Vx, 'Текст выводимой строки.')

fprintf(Vx, 'Еще одна строка.\n')

fprintf(Vx, 'Этот текст с новой строки.)

приводит к аналогичному результату.

Файл–программа, демонстрирующая вывод трёх строк в текстовый файл с именем 'ksi.txt', находящийся в текущей папке, имеет следующий вид

[F,ss] = fopen('ksi.txt', 'wt');

fprintf(F, 'Текст выводимой строки.’);

fprintf(F, 'Еще одна строка.\n')

fprintf(F, 'Этот текст с новой строки.')

fclose(F);

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

Форматный вывод информации

Задание формата вывода значений переменных в командное окно описано выше. Это – форматы short, long, short e и long e, задаваемые командой format. Однако функция fprintf допускает гораздо более гибкое управление видом записи чисел в файл. Схема её использования при работе с числовыми переменными такова:

fprintf(идентификатор, 'форматы', переменные)

Здесь первый аргумент, как и в случае вывода строк, является идентификатором файла, второй – строка с кодами форматов, которые определяют вид записи значений переменных из списка, который задаётся третьим аргументом.

Одним из часто используемых кодов формата в Matlab’е является код %N.mf. Он применяется для записи числа в фиксированном формате с десятичной точкой. Знак процента указывает на начало формата. Его первая цифра означает, что всего под значение выводимой переменной отводится N позиций, включая десятичную точку и место под знак, которое резервируется и для положительных чисел. Вторая цифра после точки–разделителя означает, что под дробную часть значения выводимой переменной отводится m позиций. Сам спецификатор f указывает на то, что число следует вывести в формате с плавающей точкой.

Текст программы, записывающей в файл шапку таблицы и результаты расчёта значений тригонометрического синуса, приведён ниже:

[F,mes] = fopen('tablsin.txt', 'wt');

x = -Pi/4:0.1*Pi:Pi/4;

y = sin(x);

fprintf(F, ' х | у= sin(x)\n');

fprintf(F, '--------+------------\n');

for i=1:6

fprintf(F, '%7.4f', x(i));

fprintf(F, ' | ');

fprintf(F, '%11.8f', y(i));

fprintf(F, ' \n');

end

fclose(F);

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

х | у= sin(x)

--------+------------

-0.7854 | -0.70710678

-0.4712 | -0.45399050

-0.1571 | -0.15643447

0.1571 | 0.15643447

0.4712 | 0.45399050

0.7854 | 0.70710678

При использовании форматного вывода следует учесть, что в случае, если количество переменных в списке вывода больше числа кодов формата, то для вывода неуместившихся переменных коды форматов применяются повторно, начиная с первого.

 

Ввод данных из файла

Чтение числовых данных из фрагмента текстового файла, организованного как таблица, может быть выполнено с помощью функции dlmread. Её синтаксис имеет вид

M = dlmread('filename', 'r', n, m)

где filename – имя файла, из которого считывается информация, r – символ, с помощью которого в файле разделены записи, n – количество строк, которые пропускаются при считывании, считывание начинается с (n +1)-й строки, m – количество записей, которые пропускаются в каждой строке, считывание в каждой строке начинается с (m +1)-й записи.

Например, если в файле Labrab_1.dat хранятся числа, разделённые запятыми, по 3 числа в 3-х строках

2341.15, 2.2, 2.356

3.3, 4.4, -30.5678

-23, 90, 0.09

то, в результате выполнения команды

M = dlmread('Labrab_1.dat', ',', 1, 1)

в переменной M окажется матрица размером 2 на 2 элементов со значениями

M =

4.4000 -30.5678

90.0000 0.0900

В функции dlmread вместо параметров n и m можно в виде записи–строки задать диапазон адресов считываемых из файла данных, записанных в виде таблицы. Этот диапазон адресов задается так же, как в Excel’е в виде адресов первой и последней записи, разделённых двоеточием. Например, считывание элементов матрицы, описанное выше, может быть организовано следующим образом

M = dlmread('Labrab_1.dat', ',', 'b2..c3').

Целиком считать весь файл можно с помощью команды

fileread(filename).

Если же надо считать целиком только текущую строку, то это можно сделать комендой

fgetl(filename).

Построение графиков

Matlab позволяет строить графики вычисленных функциональных зависимостей достаточно простыми процедурами.

Для построения графика функции у = f (x) необходимо задать совокупность точек х и у. Для аргумента х это выполняется оператором

x = х0:dх:хk

где х0 – начальное значение аргумента, хk – его конечное значениие, а dх – шаг изменение аргумента. По этим значениям аргумента надлежащим программированием выражения для функции f (x) должны быть вычислены значения переменной y. Далее используется функция построения графика зависимости у от x, которая носит имя plot.

Эта функция выносит на поле декартовой системы координат точки с рассчитанными координатами (x, y) и соединяет их ломаной линией. Если число точек достаточно велико, то полученная кривая воспринимается как вполне истинный график функции у = f (x). Функция plot построения графиков имеет ряд параметров:

§ рlot(х,у) – строит график функции у = f (x), координаты точек которой берутся из векторов одинакового размера х, иу;

§ рlot(х,у,s) – аналогична предыдущему использованию функции рlot, но тип линии графика можно задавать с помощью составной строковой константы s, возможные значения которой представлены в табл.5.

Таблица 5.

Цвет линии Тип точки Тип линии
y – жёлтый, m – фиолетовый, c – голубой, r – красный, g – зелёный, b– синий, w – белый, k – чёрный.   .. – точка, О – окружность, х – крест, + – плюс, * – звездочка, s – квадрат, d – ромб, v – треугольник (вниз), ^ – треугольник (вверх), < – треугольник (влево), > – треугольник (вправо), p – пятиугольник, h– шестиугольник. - – сплошная, : – двойной пунктир, -. – штрихпунктир, -- – штриховая,  

Таким образом, с помощью строковой константы s можно менять цвет линии, представлять узловые точки различными отметками и менять тип линии графика. Для вывода сетки в поле графика используется команда grid, введенная после функции рlot. Например, построение из командной строки графиков трех функций

y 1 = sin x, y 2 = sin2 x, y 3=sin3 x

на отрезке [–2 π, 2 π ] с шагом π /100 различным стилем осуществляется следующими командами:

>>x=-2*pi: 0.01*pi: 2*pi;

>>y1=sin(x); y2=sin(x).^2; y3=sin(x).^3;

>>plot(х, у1, ¢-m¢, x, y2, ¢-.+r¢, x, y3, ¢--ok¢)

В результате (см. рис.7) график функции у 1 строится сплошной фиолетовой линией, график функции у 2 строится штрих-пунктирной линией с узловыми точками в виде знака «+» красного цвета, а график функции у 3 строится штриховой линией с узловыми точками в виде окружностей черного цвета.

Рис.7.

Повторное использование в данной программе функции plot привёдет к построению в том же графическом окне нового графика взамен ранее построенного. Для получения нового графического окна следует использовать функцию figure, а для добавления нового графика в данной программе в существующее окно необходимо использовать команду hold on.

Matlab имеет встроенный редактор графиков для их корректировки, нанесения дополнительной информации, подготовки к печати, сохранения и экспорта в различные графические форматы. Он позволяет задавать тип и цвет линии или свойства поверхности непосредственно при построении графика, размещать заголовок и легенду, подписывать оси. Чтобы начать редактирование графиков, необходимо выбрать в меню цепочку команд «tools ® edit plot». После этого можно, выделив редактируемую часть графика, выбрать из контекстного меню необходимые операции изменения внешнего вида графика (см. рис.8).

Рис.8.

Помимо этого в меню Insert можно найти опции добавления объектов, например, стрелок, надписей и т.д.

Сообщения об ошибках и исправление ошибок

Система Matlab контролирует правильность написания программ и, при наличии ошибок, выдает соответствующее сообщение в окне команд. При этом указывается номер строки, где допущена синтаксическая ошибка, и её характер. После уяснения сути ошибки её необходимо исправить, запомнить исправленный m-файл командой Saveи снова отправить программу на выполнение. Перед этим желательно очистить окно команд от сообщений об ошибках с помощью команды Clear Command Windows в меню Edit или непосредственно введя команду >>clc. Но обольщатся здесь не следует. Программисты говорят, что последняя найденная и, естественно, исправленная ошибка на самом деле – предпоследняя.


СПИСОК ЛИТЕРАТУРЫ

1. Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н. MATLAB 7. СПб.: БХВ-Петербург, 2005. 1104 с.

2. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. 3-е изд., перераб. и доп. М.: БИНОМ. Лаборатория знаний, 2003. 632 с.

3. Воеводин В.А. Вычислительные основы линейной алгебры. М.: Наука, 1977. 303 с.

4. Волков Е.А. Численные методы. М.: Наука, 1982. 254 с.

5. Киреев В.И., Пантелеев А.В. Численные методы в примерах и задачах. М.: Высшая школа, 2004. 480 с.

6. Инженерные расчеты на ЭВМ: Справочное пособие. Под ред. В.А.Троицкого. Л.: Машиностроение, 1979. 288 с.

7. Метьюз Д., Финк К. Численные методы. Использование MATLAB. М.- СПб.- К.: «Вильямс», 2001. 716 с.

8. Потемкин В.Г. Введение в Matlab. http://matlab.exponenta.ru/ml/ book1.


 

Варвара Федоровна Блохина

Евгений Анатольевич Лопаницын

Александр Борисович Фролов

 

Численные методы. Расчеты в среде MATLAB элементов автомобильных конструкций. Учебное пособие по дисциплинам «Прикладная математика», «Методы приближенных вычислений» и «Численные методы» для студентов, обучающихся по специальностям и направлениям: 141100 – Энергетическое машиностроение, 151600 – Прикладная механика, 151900 – Конструкторско-технологическое обеспечение машиностроительных производств и 150700 – Машиностроение, 190109 – Наземные транспортно-технологические средства, 220700 – Автоматизация технологических процессов и производств.

 

 

Подписано в печать Заказ

Формат Печ.л. ….. Уч.-изд.л. ….. Тираж 100

МАМИ Москва 105839 Б.Семёновская, 38.


Дата добавления: 2015-07-08; просмотров: 140 | Нарушение авторских прав


Читайте в этой же книге: О выборе метода решения систем уравнений | Контрольные задания | Кусочно-линейная интерполяция | Справочная информация | Усовершенствованный метод Эйлера | Оценка погрешностей методов | Справочная информация | Усовершенствованный метод Эйлера | Оценка погрешностей методов | Контрольные задания |
<== предыдущая страница | следующая страница ==>
Простейшие способы ввода–вывода информации| Найдите значение выражения .

mybiblioteka.su - 2015-2024 год. (0.017 сек.)