флаг][ширина поля вывода][точность] тип (спецификатор) формата
В квадратных скобках – необязательные параметры.
Флаг – используется, например, если перед числом надо поставить знак (+ или -).
Если указанная ширина поля вывода недостаточна, то поле вывода расширяется до необходимого.
Точность – количество знаков после десятичной точки.
При необходимости в строке преобразования могут еще стоять специальные символы, например, перевод строки \n
Наиболее используемые спецификаторы формата:
d – для целых со знаком
f – для вещественных со знаком
g – для вывода вещественных чисел в экспоненциальной форме - e или в естественной форме - f , в зависимости от значения
s – строка
Для нашего примера вывод на экран значения переменной x с поясняющим текстом в разных форматах:
Формат вывода вещественного числа с количеством позиций под число по умолчанию. Для нашего числа:
>> disp(sprintf('x=%g',x))
x=15.6579
>> disp(sprintf('x=%f',x))
x=15.657890
Формат вывода вещественного числа с количеством позиций под число – всего 4 и 1 позиция после десятичной точки:
>> disp(sprintf('x=%4.1f',x))
x=15.7
При выводе происходит автоматическое округление по законам математики.
Формат вывода вещественного числа с количеством позиций под число – всего 6 и 3 позиции после десятичной точки:
>> disp(sprintf('x=%6.3f',x))
x=15.658
Рассмотрим использование форматного вывода еще на одном простом примере.
Пусть даны вещественные: x=pi/4; y=sin(x); и целое z=42;
Хотим получить на экране выод значений этих переменных с поясняющим текстом в следующем виде:
x=<значение>; y=<значение>; z=<значение>;
Зададим:
>> x=pi/4
x =
0.7854
>> y=sin(x)
y =
0.7071
Преобразуем z в целое (по умолчанию z будет типа double)
z=int8(42)
z =
>> whos z
Name Size Bytes Class Attributes
z 1x1 1 int8
Мы хотим вывести на экран значение x, под которое будет выделено 4 позиции и нам достаточно 2 позиций после десятичной точки (0,ХХ). А значение y хотим разместить в 5 позициях с тремя цифрами после десятичной точки (0.707). Под значение z определим количество позиций по умолчанию.
>> sprintf('x=%4.2f; y=%5.3f; z=%d;',x,y,z)
ans =
x=0.79; y=0.707; z=42;
Наверное, пока такой способ не надо
Еще способ. Можно объединить соответствующие переменные в вектор, пользуясь операцией создания вектора-строки: x = [x1 x2 ... x]. Тогда вывод значений нескольких переменных в одну строку будет иметь вид: disp ([x1 x2 ... x]).
Например, x1=1.24; x2=-3. 45; x3=5.76; x4=-8. 07;
disp([x1 x2 x3 x4])
Получим:
1. 2400 -3. 4500 5. 7600 -8. 0700.
Аналогично можно объединять несколько текстовых переменных, например: » x1=' psi '; x2=' fi '; x3=' teta '; x4=' w1 '; » disp([x1 x2 x3 x4]) psi fi teta w1
Если Т - текстовая переменная, или некоторый текст, а Х - числовая переменная, то вывод их в одной строке можно обеспечить обращениям disp ([T num2str(X)]). Рассмотрим пример: x = -9. 3088e-015 » T = 'Значение параметра равняется '; » disp([T x]) Значение параметра равняется » disp([T num2str(x)]) Значение параметра равняется -9. 309e-015 Как следует из этого примера, "механическое" объединение текстовой и числовой переменных не приводит к желаемому результату.
А теперь пример программы целиком.
Напишем скрипт-файл вычисления арифметического выражения, приведенного выше.
Res=
x=input('Введите значение x=');
y=input('Введите значение y=');
res=(3*cos(x^3)^2-sin(x-pi/3))/(log(abs(y))+exp (sqrt (x+1))/(2*x))*1E6;
disp(sprintf('x=%4.2f; y=%5.3f; res=%10.3f;',x,y,res))
Сохраним его с именем, например f1и выполним. Запустить файл на выполнение можно из пункта меню Debug, Run или, набрав в окне Commad Window имя файла f1
На экране получим:
Введите значение x=0.5
Введите значение y=1
x=0.50; y=1.000; res=1020676.111;
Дата добавления: 2016-04-02; просмотров: 761;