Раздел: Документация
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
|