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

0 ... 145 146 147 148 149 150 151 ... 365

Примечание

Часто кроме конвертирования числа в строку требуется обратное преобразование строки в число, которое осуществляется функцией str2num. Во входном аргументе задается строка из символов, например: 423.77, или 1.98е-03,ав выходном аргументе возвращается соответствующее число. Входным аргументом может быть и массив строк, который преобразуется в числовой массив. Если преобразование невозможно, например, а = str2num< 12А99), то результатом работы будет пустой массив (подробно о функциях преобразования сказано в приложении 1).

Вышеописанная модификация вида результата требует некоторых изменений в тексте файл-функции calc, приведенном в листинге 8.19. Операторы, реализующие ввод пользователя, остаются без изменений. Попытайтесь самостоятельно модернизировать файл-функцию calc, в случае возникновения вопросов обратитесь к листингу 8.20, в котором приведены операторы, обрабатывающие ввод пользователя и выдающие результат. Диалог файл-функции calc теперь выглядит следующим образом:

» calcic

Введите первое число 1.2

Введите арифметическую операцию (+, -, *, /) +

пользователь получает в стандартной переменной ans. Диалог файл-функции caic приведен ниже:

» calc

Введите первое число 1.2

Введите арифметическую операцию (+, *, /) + Введите второе число 3.1 ans -

4.3000

Попробуйте изменить файл-функцию calc так, чтобы ответ имел более наглядный вид. Например, если производится сложение 1.2 и 3.1, то в командное окно выводится 1.2 + 3.1 = 4.3. Задача состоит в формировании строки с результатом (из введенных чисел, знака арифметической операции, знака "=", ответа) и выводе ее в командное окно. Обратите внимание, что строка результата формируется как из строк, например,+ и =, так и из чисел 1.2, 3.1,4.3, которые хранятся в переменных. Очевидно, что для получения требуемой строки следует применить сцепление. Перед сцеплением необходимо преобразовать значение переменной в строку при помощи функции num2str, входной аргумент которой является числом или переменной с числовым значением, а выходной — строковой переменной, соответствующей данному числовому значению.


Введите второе число 3.1 1.2 + 3.1 = 4.3

Листинг 8.20. Улучшение вида результата работы файл-функции calc

function calcl

% Калькулятор с интерфейсом командной строки

% Считывание в числовую переменную числа, введенного пользователем а = input(Введите первое число );

% Считывание в строковую переменную операции, введенной пользователем

oper = input{Введите арифметическую операцию (+, -, *, /) s);

% Считывание в числовую переменную числа, введенного пользователем

b = input(1Введите второе число );

% Вычисление результата арифметической операции

switch oper

case +

res = a + b; case 1-

res - a — b; case *

res = a * b; case 1/1

res = a / b; otherwise

error(неизвестная арифметическая операция)

end

% Преобразование чисел в строки stra = num2str(a); strb = num2str(b); strres = num2str(res); % Сцепление стрэк

str = strcat(stra, oper, strb, =, strres); i Вывод строки с результатом в командное окно disp(str)

Вышеописанные примеры содержат оператор переключения switch, который производит вычисления в зависимости от знака арифметической one-


рации, выбранного пользователем. Заметьте, что пользователь вводит числа и арифметическую операцию, которые входят в арифметическое выражение, понятное MATLAB. Рациональнее создать строку с арифметическим выражением, выполнить ее, как команду MATLAB и вывести результат, тем самым избежав перебора. Такой подход позволяет дополнительно использовать возведение в степень, ввод числа п и придает программе более наглядный вид. Действительно незаменимой и очень полезной функцией является eval, которая служит для выполнения команды MATLAB, записанной в строке или строковой переменной. Формирование строки с командой и ее выполнение функцией eval описаны в следующем разделе.

Формирование и исполнение команд, функция eval

Встроенная функция eval позволяет выполнить строку, которая содержит команду MATLAB. Строка с командой является входным аргументом eval, например:

» str = Ч + 2; » eval(str) ans =

3

Перед выполнением команду можно сформировать из нескольких строк:

» strl = "у = sin(; » str2 = 3/2*pi; » str3 = );

» str = strcat(strl, str2, str3); » eval(str) У =

-1

Используйте функцию eval в файл-программе caici, приведенной в листинге 8.20, для формирования и вычисления результата арифметического выражения без перебора арифметических операций, которое было реализовано оператором switch. Файл-функция caic2, приведенная в листинге 8.21, решает поставленную задачу.

. Листинг 8.21. Файл-функция calc2, демонстрирующая использование aval

function calc2

% Калькулятор с интерфейсом командной строки



0 ... 145 146 147 148 149 150 151 ... 365