8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 135 136 137 138 139 140 141 ... 365

Ги Примечание

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

После выполнения файл-программы из листинга 8.6 содержимое файла twonum.txt составляют два числа — значения переменных х и у с требуемым числом цифр, выводимых на экран ранее написанной функцией myview:

-0.7854-0.70710678

Соответствие форматов и получаемого результата приведено на схеме, изображенной парне. 8.1, каждая позиция подчеркнута.

%7,4f%11.8f

Всего семьВсего одиннадцать позиций

позицийпод значение

Рис. 8.1. Схема соответствии форматов вывода и результата

Значения х и у вывелись одно за другим без разделителя, что затрудняет чтение результата. Можно было бы указать в списке форматов больше позиций под вывод второго числа, например, %7.4f%i5.8f. Поскольку у меньше единицы и выравнивание числа в выделенном для него поле по умолчанию производится по правому краю, то числа в данном случае будут разделены пробелами. Но если в листинге 8.6 заменить у = sin(x) на

ске вывода. Знак процента указывает на начало формата, цифра 7 обозначает, что всего под значение переменной х отводится семь позиций (включая десятичную точку и место под знак, которое резервируется и для положительных чисел), цифра 4 после разделителя-точки обеспечивает точность отображения результата— четыре цифры после десятичной точки. Спецификатор f указывает на то, что следует вывести число в формате с плавающей точкой. Аналогичным образом работает формат %n.8f для вывода у.


у = 1000000*sin (х), то числа снова не будут разделены. Кроме того, пятнадцати позиций не хватило под вывод у с восьмью знаками после десятичной точки, и MATLAB автоматически увеличил поле вывода. Поэтому при задании форматов следует предусмотреть некоторые разделители между числами.

Форматы данных можно разделять любым текстом, включая пробелы, который запишется в текстовый файл между соответствующими значениями. Внесите изменения в команду fprintf файл-программы, приведенной в листинге 8.6. Дополните запись в файл некоторыми пояснениями, так как приведено ниже

fprintf {F, X = %7.4f у = %11.8f. х, у) ;

и выполните файл-программу. Содержимое файла twonum.txt выглядит теперь следующим образом:

х = -0.7854 у = -0.70710678

Помещение символа \п в спискок форматов приводит к последующему выводу данных с новой строки. Кроме f, допустимы и другие спецификаторы форматов, в частности, спецификатор е означает вывод в экспоненциальной форме (полный список спецификаторов приведен в приложении 1).

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

О знак плюс, для отображения знака положительных чисел;

О знак минус, означающий выравнивание числа по левому краю в отведенном для него поле (по умолчанию число выравнивается по правому краю);

П цифра ноль, предназначенная для заполнения оставшихся позиций слева от числа нулями.

Команды, приведенные ниже, демонстрируют использование флага:

а = 0.56; Ь = 1.1; с = 1.22

fprintf{F, а = %+7.3f b = %-lL.lf с = %07.2f\n\ a, b, с);

Дополните ими файл-программу, приведенную в листинге 8.6, и посмотрите результат:

а = +0.560 b = 1.1с = 0001.22

Полезной особенностью fprintf является то, что список ввода может быть матрицей. Матрица выводится по столбцам — с последовательным применением форматов из списка.


Команды

[F, mes] = fopen(randmatr.txt, w);

r = rand(3) ,-

disptR)

fprintf(F, %7.4f I %7.4f I %7.4f \n, r);

f close (F) ;

выводят квадратную матрицу r размера три на три из случайных чисел в командное окно и файл, столбцы в файле разделены вертикальными линиями. Обратите внимание, что аргументом команды fprintf является транспонированная матрицаr, т.к. fprintf работает с матрицей по столбцам. Матрица, отображенная в командном окне, совпадает с матрицей, записанной в файл randmatr.txt.

Информации о форматах, приведенной выше, вполне достаточно для завершения работы над файл-функцией sintable, предназначенной для вывода таблицы значения функции sin в файл. В случае возникновения затруднений обратитесь к листингу 8.7, в котором приведена часть файл-функции, отвечающая за вывод таблицы (разумеется, данный блок должен предшествовать закрытию файла функцией fciose). Операторы, осуществляющие запись в файл названия и шапки таблицы, приведены в листинге 8.5.

. Листинг 8.7. Блок операторов для вывода таблицы значений функции

% Создание вектора значений аргумента х = 0:pi/2:2*pi;

Ь Конструирование матрицы, первая строка которой содержит К значение аргумента, а вторая — значения функции sin М = [х; sin(x) ];

% форматный вывод элементов матрицы fprintf(F, 1%7.3f%10.4f\П, M);

Вставьте вышеприведенный блок операторов в вашу файл-функцию sintable и вызовите ее, указав в качестве входного аргумента строку с именем файла table.dat. В результате создается файл table.dat, содержимое которого приведено ниже:

ТАБЛИЦА ЗНАЧЕНИЙ ФУНКЦИИ sin(x)

I х I У sin(x)

I 0.0001 0.00001



0 ... 135 136 137 138 139 140 141 ... 365