通过matlab在Cygwin中执行命令只会生成3个文件中的2个

时间:2016-03-15 23:25:33

标签: bash matlab cygwin

我试图从physionet.org转换一些数据。我批量下载了一堆.dat文件,我需要将其转换为.mat文件。 Physionet.org提供了一个用于执行此操作的工具箱(即使对于MATLAB)。我只是不能让MATLAB工具箱/功能起作用。这导致我安装cygwin并编译它们的库并以这种方式在matlab中运行循环并逐个转换它们。

我正在使用wfdb2mat这样的函数:wfdb2mat -r s0010_re> s0010_rem.info。这应该产生三个文件:.hea,.mat和.info。在通过matlab运行时,不会生成最后一个.info文件,但是手动运行该命令会有效。

以下代码是我正在使用的代码:

    theprogram = '"C:\cygwin64\bin\bash.exe"';
    thearguments = ['-l -i -c ''cd ''/cygdrive/c/users/xxx/' filename ''';' 'wfdb2mat -r ' s ' > ' s 'm' '.info']
    system(sprintf('%s %s', theprogram, thearguments))

sprintf输出:" C:\ cygwin64 \ bin \ bash.exe" -l -i -c' cd' / cygdrive / c / users / xxx / patient001&#39 ;; wfdb2mat -r s0010_re> s0010_rem.info "

如果我直接将其复制到bash.exe的快捷方式,它可以输出所有三个文件。当MATLAB打开bash时,我注意到的唯一区别是这两条消息:

bash:无法设置终端进程组(-1):不适用于设备bash的ioctl:此shell中没有作业控制

更新 我发现MATLAB在MATLAB wd中创建输出文件(.info) - 所以通过将该文件移动到目标文件夹,问题就解决了。我尝试在命令行中添加绝对路径,但这对我来说并不适用。

我希望有人可以提供帮助!提前谢谢,桑尼

1 个答案:

答案 0 :(得分:0)

我发现MATLAB在MATLAB wd中创建了输出文件(.info) - 所以通过将该文件移动到目标文件夹,可以使用movefile命令解决问题。我尝试在命令行中添加绝对路径,但这对我来说并不适用。