qq_46151004 2023-08-27 15:27 采纳率: 1.8%
浏览 21
已结题

matlab system函数 如何按顺序运行

在matlab中如何等 system函数运行完成后再继续向下运行?
现状是 system函数启动cmd命令后,会同步执行下行的命令,由于下行未获取到所需数据而停顿。
目标是 想等cmd命令运行完成后,产生所需数据文件后再继续system函数下行的命令。
方法1 实时检测cmd命令产生的数据文件不在增大后,才执行下行命令。如何实时检测?
方法2 实时检测cmd命令启动的仿真软件关闭后,才执行下行命令,如何实时检测某软件已关闭?

示例:
system(cmd命令.cmd);%cmd命令启动其他仿真软件,执行仿真并产生数据文件,数据文件不断增大。
其他命令,比如读取运行cmd命令后产生的数据文件;

注:cmd命令中有2级cmd命令,命令流就是先运行1级命令启动仿真软件A进行相关设置,再运行2级命令启动仿真软件B进行仿真,在2级命令启动仿真软件B后就和matlab同步执行了。

  • 写回答

10条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-08-27 17:05
    关注

    引用 皆我百晓生 小程序回复内容作答:

    在MATLAB中,你可以使用system函数来执行外部命令。默认情况下,system函数是同步的,即它会等待外部命令执行完成后再继续向下运行。

    以下是两种方法来实现你的目标:

    方法1:检测数据文件是否增大
    你可以使用dir命令来获取文件的大小信息,并在文件不再增大时继续运行下一条命令。你可以使用一个循环来实时检测文件大小。

    cmd = 'your_cmd_command'; % 设置你的cmd命令
    system(cmd);
    
    file_path = 'path_to_your_data_file'; % 设置你的数据文件路径
    previous_size = 0; % 用于保存上一次的文件大小
    
    while true
        file_info = dir(file_path);
        current_size = file_info.bytes;
        
        if current_size > previous_size
            previous_size = current_size;
            pause(1); % 等待一段时间后再进行下一次检测
        else
            break; % 当文件大小不再增大时,跳出循环,继续执行下一条命令
        end
    end
    
    % 在这里继续执行你需要在数据文件生成后运行的代码
    

    方法2:检测仿真软件是否关闭
    你可以使用tasklist命令来检测某个进程(例如仿真软件)是否存在。当进程不存在时,表示仿真软件已关闭,可以继续运行下一条命令。

    cmd = 'your_cmd_command'; % 设置你的cmd命令
    system(cmd);
    
    process_name = 'name_of_your_simulation_software'; % 设置你的仿真软件进程名称
    
    while true
        [~, result] = system(['tasklist /FI "IMAGENAME eq ' process_name '"']);
    
        if contains(result, process_name)
            pause(1); % 等待一段时间后再进行下一次检测
        else
            break; % 当仿真软件进程不存在时,跳出循环,继续执行下一条命令
        end
    end
    
    % 在这里继续执行你需要在仿真软件关闭后运行的代码
    

    请根据你的具体情况选择适合的方法,并根据你的命令和文件路径进行适当的修改。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月31日
  • 修改了问题 8月27日
  • 创建了问题 8月27日

悬赏问题

  • ¥15 verilog 非阻塞赋值下的移位拼接错误
  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
  • ¥15 ansys机翼建模肋参数
  • ¥15 Sumo软件无法运行
  • ¥15 如何在vscode里搭建stata的编辑环境?
  • ¥15 dify知识库创建问题
  • ¥15 如何用C#的chart画1000万个点不卡顿
  • ¥15 爬虫技术找到网上看过房源客户的电话