Это зависит от того, что вы знаете об ОС и какими свойствами обладает ваша программа.
В Linux я обычно делаю что-то вроде:
[error, path] = system(sprintf('which "%s"',programName));
Это не выглядит красиво, и это далеко от портативности (я полагаю, это не будет работать в Windows, возможно, только если вы установите Cygwin или что-то подобное). В Unix это намного проще, так как большинство исполняемых файлов доступны по «пути» (переменная среды «путь»), в то время как в Windows большинство исполняемых файлов хранятся либо в каталоге Windows (который находится в пути по умолчанию, поэтому они находятся), либо в каталоге Program Files, который, насколько я помню, не таков.
Ошибка = 0, когда программа найдена, а path
тогда, очевидно, содержит путь к исполняемому файлу.
Для Windows, я думаю, вы можете искать программу во всех каталогах, но это может быть несколько утомительно.