Команда 2+3*4, введённая в командное окно MATLAB, сразу возвращает результат 14 — среда вычисляет выражение по стандартным правилам приоритета операций, и это самый быстрый способ использовать MATLAB как калькулятор. Однако возможности среды намного шире: от инженерных расчётов с матрицами до создания собственного калькулятора с графическим интерфейсом в App Designer.
В этой статье разберём два сценария. Первый — использование командного окна MATLAB как мощного вычислительного калькулятора. Второй — разработка собственного приложения-калькулятора с кнопками и полем ввода. Оба подхода подойдут студентам, инженерам и всем, кто работает с численными расчётами.
MATLAB как настольный калькулятор: базовые операции
Командное окно (Command Window) — это интерактивная строка, куда вводятся выражения. MATLAB поддерживает стандартные арифметические операторы: +, -, *, /, а также возведение в степень через ^. Скобки работают так же, как в обычной математике.
Результат последнего вычисления автоматически сохраняется в переменной ans, если вы не присвоили его другой переменной. Это удобно для цепочек вычислений: можно ссылаться на предыдущий ответ без повторного ввода числа.
sqrt(144) + log(10)
ans = 14.3026
Для более сложных расчётов доступны встроенные математические функции:
- 🔢
sqrt(x)— квадратный корень,abs(x)— модуль числа; - 📐
sin(x),cos(x),tan(x)— тригонометрия в радианах; - 📊
log(x)— натуральный логарифм,log10(x)— десятичный; - 🔄
round(x),floor(x),ceil(x)— округление в разных режимах.
Форматы вывода чисел
По умолчанию MATLAB отображает числа с четырьмя знаками после запятой (формат short). Если нужна большая точность отображения, введите команду format long — будет показано больше значащих цифр. Важно понимать: формат влияет только на отображение, а не на точность внутренних вычислений — MATLAB всегда считает с двойной точностью.
Вернуть стандартный вид можно командой format short. Для инженерных расчётов с очень большими или малыми числами полезен экспоненциальный формат, который тоже включается через команду format с соответствующим параметром.
| Команда | Назначение | Пример результата |
|---|---|---|
format short | 4 знака после запятой | 3.1416 |
format long | расширенная точность вывода | 3.141592653589793 |
format bank | денежный формат, 2 знака | 3.14 |
format compact | убирает пустые строки в выводе | — |
Работа с переменными и выражениями
Переменные создаются простым присваиванием: x = 5. Имя должно начинаться с буквы и может содержать буквы, цифры и подчёркивания. MATLAB различает регистр: Price и price — разные переменные.
Точка с запятой в конце строки подавляет вывод результата в командное окно. Это полезно при длинных цепочках вычислений, когда промежуточные значения не нужны на экране, но должны храниться в памяти для дальнейших операций.
a = 12;
b = 7;
result = (a^2 + b^2) / (a - b)
⚠️ Внимание: если вы случайно перезапишете встроенную функцию, назвав переменную, например,sum, одноимённая функция перестанет работать, пока вы не очистите переменную командойclear sum. Это частая причина «непонятных» ошибок у новичков.
Создание калькулятора в App Designer
App Designer — встроенная среда MATLAB для создания приложений с графическим интерфейсом. Она открывается командой appdesigner в командном окне или через вкладку Apps. Визуальный редактор позволяет перетаскивать кнопки, поля ввода и метки на форму, а логика прописывается в колбэках (функциях обратного вызова).
Минимальный калькулятор обычно включает поле отображения результата (Edit Field), кнопки цифр и операций, а также кнопку «равно». Логика обработки нажатий строится на накоплении строки выражения и последующем её вычислении.
☑️ Этапы создания калькулятора в App Designer
Для кнопки «равно» типичный подход — взять текст из поля ввода и вычислить его. На практике часто используют функцию str2double для простых выражений или парсинг строки для более сложных. Обработку ошибок ввода стоит предусмотреть заранее: пользователь может ввести некорректное выражение.
function EqualsButtonPushed(app, event)
expr = app.DisplayField.Value;
try
app.DisplayField.Value = num2str(eval(expr));
catch
app.DisplayField.Value = 'Ошибка';
end
end
⚠️ Внимание: функция eval выполняет любой введённый код, включая потенциально опасные команды. Если калькулятором будут пользоваться другие люди, безопаснее реализовать собственный парсер выражений, который принимает только числа и арифметические операторы.
Альтернативные способы: скрипт-калькулятор
Если графический интерфейс не нужен, можно написать консольный калькулятор как обычный скрипт или функцию. Функция input запрашивает данные у пользователя, а disp выводит результат. Такой вариант проще в отладке и быстрее создаётся.
a = input('Введите первое число: ');
op = input('Операция (+ - * /): ', 's');
b = input('Введите второе число: ');
switch op
case '+', r = a + b;
case '-', r = a - b;
case '', r = a b;
case '/'
if b == 0
disp('Деление на ноль невозможно');
return;
end
r = a / b;
otherwise
disp('Неизвестная операция');
return;
end
disp(['Результат: ', num2str(r)]);
Конструкция switch здесь удобнее цепочки if-else: она наглядно сопоставляет символ операции с действием. Обратите внимание на проверку деления на ноль — без неё MATLAB выдаст Inf вместо понятного сообщения.
Типичные ошибки и их решение
Начинающие пользователи MATLAB при создании калькуляторов сталкиваются с повторяющимися проблемами. Большинство из них связаны с типами данных и синтаксисом.
- ❗ Ошибка Undefined function or variable — проверьте имя переменной и регистр букв, MATLAB чувствителен к регистру;
- 🧮 Неверный результат при вводе из поля — данные из Edit Field приходят как строка, преобразуйте их через
str2double; - 🔁 Колбэк кнопки не срабатывает — убедитесь, что функция привязана к событию ButtonPushed в свойствах компонента;
- 📏 Матричные операции вместо поэлементных — для поэлементных вычислений используйте операторы с точкой:
.*,./,.^.
Если приложение в App Designer ведёт себя непредсказуемо, проверьте области видимости: переменные, нужные в нескольких колбэках, должны быть объявлены как свойства приложения (через раздел properties), а не как локальные переменные внутри одной функции.
Почему 0.1 + 0.2 не равно точно 0.3 в MATLAB
MATLAB использует двоичную арифметику с плавающей точкой (double). Числа 0.1 и 0.2 не представляются точно в двоичном виде, поэтому их сумма даёт результат вроде 0.30000000000000004. Для сравнения таких чисел используйте проверку с допуском, например abs(a - b) < 1e-10, вместо строгого равенства.
Часто задаваемые вопросы
Можно ли использовать MATLAB как обычный калькулятор без программирования?
Да. Командное окно работает как инженерный калькулятор: вводите выражение, нажимаете Enter и получаете результат. Доступны арифметика, степени, тригонометрия, логарифмы и тысячи встроенных функций.
Чем App Designer отличается от GUIDE?
GUIDE — устаревший инструмент создания интерфейсов в MATLAB. MathWorks рекомендует использовать App Designer для новых проектов: он предлагает современные компоненты и более удобную структуру кода. В новых версиях MATLAB поддержка GUIDE постепенно сворачивается.
Как добавить в калькулятор память (M+, MR)?
Объявите свойство приложения, например app.Memory, в разделе properties. Кнопка M+ будет прибавлять текущее значение к этой переменной, а MR — подставлять сохранённое число в поле ввода.
Почему eval считается плохой практикой?
Функция eval исполняет произвольный код из строки, что создаёт риски безопасности и затрудняет отладку. Для учебного калькулятора это допустимо, но в приложениях для других пользователей лучше написать собственный разбор выражения, ограниченный числами и операторами.
Есть ли бесплатная альтернатива MATLAB для таких задач?
Да, GNU Octave — свободная среда с синтаксисом, во многом совместимым с MATLAB. Простые скрипты-калькуляторы обычно работают в ней без изменений, хотя App Designer там отсутствует.