Вопрос в том, как Matlab влияет на поведение вашего приложения, поскольку это отдельный процесс. Я подозреваю, что Matlab модифицирует переменные среды таким образом, что это влияет на OMP, возможно, потому, что он использует OMP для внутреннего использования, а процесс, который вы порождаете из Matlab, наследует эту измененную среду.
Сделайте "set> plain.txt" из командного окна, в котором вы запускаете свое приложение plain, и "system ('set> from_matlab.txt')" из Matlab, и разведите выходные данные. Это покажет вам различия в переменных среды, которые представляет Matlab. Когда я это делаю, это появляется в среде, унаследованной от Matlab, но не в среде обычного командного окна.
OMP_NUM_THREADS=1
Это похоже на настройку OpenMP, связанную с вызовами функций в вашем вопросе. Держу пари, что твое порожденное приложение это видит и уважает.
Я не знаю, почему Матлаб это настраивает. Но в качестве обходного пути, когда вы запускаете приложение из Matlab, вместо того, чтобы вызывать его напрямую, вызовите файл-оболочку .bat, который очищает переменную среды OMP_NUM_THREADS или устанавливает для нее более высокое число.