1

我需要从forMATLAB 的循环中运行 C++ 可执行文件。为此,我编写了以下代码,

EqNumbers = [17 18 20 21 22 23];

for i = 1:length(EqNumbers)

    EqNumber = EqNumbers(i);
    WriteRunE_File(EqNumber);

    filename=['RunE_1.tcl'];
    system(['OpenSees.exe<',filename]);

end

它大部分时间都运行良好,但是有时会出现调试错误(如下所示)。它提示我采取行动,如果我按下“中止”按钮,那么程序将继续进行下一次迭代。我只是想让这个过程自动化,每次手动按下中止按钮对我来说是不可能的,因为程序中有超过 1000 个迭代。

在此处输入图像描述

我尝试try-catch end如下使用,但它没有达到目的。

EqNumbers = [17 18 20 21 22 23];


for i = 1:length(EqNumbers)
    try
        % Code to be executed goes here.

        EqNumber = EqNumbers(i);
        WriteRunE_File(EqNumber);

        filename=['RunE_1.tcl'];
        system(['OpenSees.exe<',filename]);
    catch
        disp('An error occurred in Equke');
        disp('Execution will continue.');
    end

end

我正在寻找绕过错误消息或自动按下“中止”按钮的方法。这样程序将自动移动到下一个迭代。

笔记:

我无权访问 C++ 源代码(我只有一个可执行文件),因此我无法更新citaR. 这就是我在 MATLAB 中寻找解决方法的原因。

4

1 回答 1

5

MATLAB 没有弹出此对话框。你的系统是。

有人创建了一个使用未初始化变量且行为未定义的程序。他们在调试模式下构建它。这种组合导致断言。你不能把它关掉。

即使可以,您也正在中止程序。这并不意味着“忽略问题”:它意味着“中止程序”。它没有完成它的工作。它崩溃了。每一次。

可执行文件有问题。时期。

该程序的作者应该给你一个发布版本:理想情况下,一个没有错误的版本。

或者,由于该程序是开源的并且可以在此处找到,您可以尝试构建一个新版本,或者对其进行调试并提供修复。

于 2019-08-19T12:49:32.267 回答