c - 从 Matlab 运行 C 可执行文件

标签 c linux matlab executable

我尝试在 Linux 上从 matlab 运行 Sift 特征描述符可执行文件的 C 实现。我运行的脚本以及某些文件夹和可执行文件中的可执行文件由以下

运行
./sift <tmp.pgm >tmp.key

我确实在 Matlab 上运行了它,但没有一个起作用

eval('!./sift <tmp.pgm >tmp.key');
system('./sift <tmp.pgm >tmp.key');
unix('./sift <tmp.pgm >tmp.key');

我还从终端检查了可执行文件,它的工作没有任何缺陷。有没有其他方法可以做到这一点,或者我有什么小错误吗?

最佳答案

您的语法看起来正确。

-1状态意味着它可能无法找到或启动 sift根本不。我知道这是基本的(我认为其他人提到过它),但是您的 Matlab 程序是否从与 sift 相同的目录运行是在什么时候调用它? system()函数评估相对于 Matlab session 当前目录的路径,而不是调用脚本的位置。如果您的脚本调用了 cd由于其他原因,这会影响它。使用 pwd 检查当前目录并执行 lsexist('./sift', 'file')以确保它在那里。

如果是这种情况,您可以通过调用 sift 使其更加健壮。具有绝对路径,可以在运行时使用 fileparts(mfilename('fullpath')) 计算在脚本中。

关于c - 从 Matlab 运行 C 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466442/

相关文章:

C宏返回变量类型

c - 无效输出错误

multithreading - MATLAB:多线程和多核之间的区别

arrays - MATLAB:类属性中的结构初始化数组

c - 不同内核上的多个线程读取同一组文件

c - 在编译时执行 C 宏函数

linux - 我在我的应用服务器上通过 top 命令观察到一个 Java 进程在根级别运行,它会导致性能问题吗?

linux - 无法在 Ubuntu 12.04 上安装 libpugixml-dev

linux - 用于查找文件系统使用情况的 Bash 脚本

c - Discrete Wavelet Transform LeGal 5/3 with Lifting(负值,可视化,LH HL混淆)