Отладка на C++ вычислительных алгоритмов с помощью пакета Mathcad

При реализации алгоритмов обработки различных сигналов, алгоритмов обнаружения, имитационном моделировании возникает необходимость визуального отображения графиков функций и другой отладочной информации. Одним из способов отладки является написание отладочной программы, реализующей отображение всей графической информации. В старые времена, при использовании Borland C++ Builder, сначала 5, затем 6, это было сравнительно несложно, Builder запускался уже с формой, на которую из палитры компонентов кладешь TChart, добавляешь к нему Series, и выводишь всю необходимую информацию.

Сейчас работаю в QT и здесь уже реализация интерфейса стала более затратной.

С другой стороны, для предварительного моделирования и написания контрольного примера использую Mathcad. Почему не matlab? Потому что Mathcad нагляден. Документ Mathcad — это документ. Написал сверху «Утверждаю», распечатал, и вот, расчетная программа превратилась в задание программисту. А matlab — это код. Какой смысл делать один код, чтобы переводить его в другой? А если нужно документальное описание алгоритма, нужно еще отдельно описывать его в Word-е.

В стремлении совместить нежелание писать отладочные окна и сопоставление результатов с контрольным примером в mathcad-е, нашел выход — разработку веду в консольном проекте, необходимые исходные данные сохраняю из mathcad в файл, результат расчета — считываю из файла, отображаю, сравниваю.

Природная ленность подсказала еще один шаг к упрощению данной схемы. Известно, что для маткада можно писать подключаемые библиотеки со своими функциями. Я в стародавнее время освоил это дело, и очень широко это использовал. Но, поскольку это плагин к маткаду, его не удобно использовать в качестве отладки. И отладчиком не подключиться, и каждый раз нужно закрывать-открывать маткад, и если что-то не так, маткад просто падает, без всякий сообщений.

Вот если бы была функция, в параметры которой можно подать имя исполняемого файла и строку параметров. Функция бы дожидалась выполнения исполняемого файла и выводила возвращаемое значение. Смысл в то, что вход-выход алгоритма как и в предыдущем методе можно передавать через файлы, оперативное управление — через строку параметров.

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

Параметры

Частота дискретизации, Гц

Длительность модели, с

Длительность сигнала, с

Частота сигнала, Гц

Сохранение параметров

Выполнение программы

Считывание и вывод результата

DLL-файл с реализацией функции s_runexe(FILE, PARAM) можно скачать здесь.

Для подключения его к mathcad необходимо разместить его в папке

c:\Program Files (x86)\Mathcad\Mathcad 14\userefi\

(для стандартной установки 14 версии маткада. Или аналогичной — у вас.

Поделиться
Обновлено: Март 7, 2019 — 15:57

Добавить комментарий