matlab - 使用 MATLAB 在每个实例之后实时处理文件,文件由单独的程序创建

标签 matlab process real-time

我正在使用 MATLAB 处理由相机创建并存储在 Windows 目录中的图像文件。我试图将反馈合并到相机的控制中,因此每次创建新图像并出现在目录中时都需要 MATLAB 处理图像。我从未创建过连续运行并等待事件发生的 MATLAB 程序。

根据我在网上阅读的内容,我的最佳选择似乎是使用计时器对象并让 MATLAB 程序重复读取目录的内容。这是一个好方法还是我可以实现其他方法?

我想知道是否有一种方法可以通过目录中文件的出现“触发”MATLAB 程序,而不是不断调查该目录的内容。我希望有,因为当目录填满时,我发现 MATLAB 中的“dir”命令真的很慢;慢到我可能无法按照我的要求快速处理图像。

作为跟进。关于如何部署这个程序有什么建议吗?我喜欢的一个想法是带有“开始”和“停止”按钮的简单 GUI。

谢谢。

最佳答案

您可以执行以下操作:

创建计时器对象,它将每 10 秒检查一次您的目录:

t = timer('TimerFcn', @mycallback, 'Period', 10.0, 'ExecutionMode', 'fixedSpacing');

您的'mycallback' 函数应如下所示:

DIR_TO_READ = 'C:\incoming-files';
DIR_TO_MOVE_PROCESSED = 'C:\processed-files';

% get list of files.
file_struct = dir(DIR_TO_READ)
% remove '.' and '..' directories
file_struct([file_struct.isdir]) = [];
for j = 1 : numel(file_struct)
    current_file = file_struct(j).name;
    full_filename = fullfile(DIR_TO_READ, current_file)

    % add your processing of the file here
    % e.g.
    bla = imread(full_filename);

    % now move the processed file to the processed file folder
    movefile(full_filename, fullfile(DIR_TO_MOVE_PROCESSED, current_file))

end       

现在你需要启动定时器对象

start(t);

你可以停止定时器对象

stop(t);

关于matlab - 使用 MATLAB 在每个实例之后实时处理文件,文件由单独的程序创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532825/

相关文章:

c++ - 在 C++ 中创建二维数组并在 MATLAB 中使用它

android - registerOnSharedPreferenceChangeListener 不适用于在不同进程中所做的更改

c# - 如何检测当前登录用户是否正在运行进程?

c# - 暂停后运行批处理文件并读取最后一行输出

elasticsearch - 如何在ELK中进行实时警报

matlab - 在函数范围内加载总线定义

performance - Fortran/Python/MATLAB 之间 MKL 矩阵乘法性能的特殊差异

c# - 实时显示字符串值

javascript - 如何使用 Javascript 在网站上更新项目列表?

java - 如何运行Matlab编译的Java函数?