Для этого используют несколько способов.




1. Можно объединить в одну строку и поясняющий текст, и значение переменной. Но текстовые и числовые данные нельзя объединить без дополнительных действий, так как они являются данными разных типов. Требуются преобразования.

Для перевода числового значения переменной в символьную (текстовую) форму можно воспользоваться функцией num2str, которая осуществляет такое преобразование.

Например, запись: y = num2str(x) превратит числовое значение переменной х в текстовое представление. При этом формат представления числа определяется установленным режимом вывода чисел на экран (Numeric Format). По умолчанию – это формат short (4 цифры после десятичной точки). Причем, при преобразовании происходит округление числа до такой точности.

Эту функцию можно использовать самостоятельно или совмещать ее с функцией disp.

Например, число x = 15. 65789 при использовании команды y = num2str(x) преобразуется в строковый вид “ 15. 6579” и на экране будет выглядеть y = 15. 6579

>> x = 15.65789;

>> y = num2str(x)

y =

15.6579

Можно получить сведения о переменной у

>> whos y

Name Size Bytes Class Attributes

y 1x7 14 char

Если в функции num2str указать второй параметр, num2str(x, n), то на экран при n=2 будет выведено число, состоящее из 2–х десятичных цифр, т.е. 16:

>> y = num2str(x,2)

y =

>> whos y

Name Size Bytes Class Attributes

y 1x2 4 char

А поскольку disp выводит только одну строку, то чтобы можно было вывести на экран и поясняющий текст и значение переменной, необходима функция, которая сформирует или объединит две строки. Для этого используется функция strcat (s1,s2,..sn).

>> x=15.65789;

>> strcat('Значение x=', num2str(x))

Значение x=15.6579

Чаще всего эту функцию используют вместе с disp для формирования единой строки вывода.

disp(strcat('x=', num2str(x)))

2. Другим средством достижения того же результата является использование функции sprintf.

Конструкция имеет вид:

sprintf (‘ формат', список переменных)

Функция формирует строку из числа, хранящегося в переменной x в соответствии с указанным форматом.

>> x = 15.65789;

y=sprintf('x=%3.1f ', x)

y =

x=15.7

Эту функцию удобно использовать в команде disp в виде :
disp (sprintf (‘ формат', список переменных)).

В результате получается текстовая строка y, состоящая из текста, указанного в апострофах, и значения числовой переменной x, в соответствии с указанным форматом.

Формат или строка преобразования имеет вид:

%[флаг][ширина поля вывода][точность] тип (спецификатор) формата

В квадратных скобках – необязательные параметры.

Флаг – используется, например, если перед числом надо поставить знак (+ или -).

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

Точность – количество знаков после десятичной точки.

При необходимости в строке преобразования могут еще стоять специальные символы, например, перевод строки \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;



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: