【问题标题】:system( ) function in Matlab not recognizing the parameter file nameMatlab中的system()函数无法识别参数文件名
【发布时间】:2012-07-10 13:17:52
【问题描述】:

我有一个可执行文件,它在运行时询问参数文件的名称。我尝试了所有输入参数文件名称的方式,但我得到了同样的错误:

GAM Version: 2.905 

ERROR - the parameter file does not exist, 
        check for the file and try again   

Stop - Program terminated. 


ans =

     0

参数文件的名称是gam.par。我为函数自动读取参数文件名称尝试的各种样式是:

system('"gam.exe" -f "gam.par"')

system('"gam.exe" -f "gam.par"')

system('"gam.exe" -f gam.par')

system('gam.exe -f gam.par')

system('"gam.exe" /f gam.par')

system('"gam.exe" /f gam.par /o gam.out')

system('"C:\Users\...\gam.exe" /f gam.par /o gam.out')

system(['"C:\Users\...\gam.exe" /f gam.par /o gam.out'])

其中gam.pargam.par 分别是参数(输入)文件和输出文件。但是,在上述每种情况下,我都会收到与开头所示相同的错误消息。

我所有的文件(输入、输出、可执行文件等)都在同一个文件夹中。如果我使用 system() 函数而不使用参数文件的名称,那么它会正常运行并提示我输入参数文件名,当我在提示符下输入相同的文件名(即gam.par)时,一切正常。我希望能够通过在 system() 参数中输入参数文件名来自动执行此操作,而不是在提示时手动输入。如果有人能确定我为什么无法得到我想要做的事情,那将会很有帮助。谢谢!

【问题讨论】:

  • 你试过system('gam.exe gam.par')吗?我在文档中没有看到 -f 标志/选项。
  • 酷!有效 :)。我使用了 -f 标志/选项,因为我之前曾为不同的软件使用过 system() 函数,因此我不得不在那里使用 -f。你可以把它放在答案中,我可以接受。非常感谢。

标签: matlab arguments system parameter-passing executable


【解决方案1】:

根据 Mathworks 的this page,语法为:

system('filename parameter1 parameter2...parameterN')

或者在你的情况下:

system('gam.exe gam.par') 

注意整个参数的单引号以及传递给可执行应用程序的每个参数之间的空格。还有完整的product documentation,但我发现它比我之前的链接不太清楚。

【讨论】:

    【解决方案2】:

    这是一个例子。假设您有一个文本文件位于:C:\filename.txt:

    system('type c:\filename.txt')
    

    现在如果文件的名称(或路径)中有空格,您需要使用双引号:

    system('type "c:\my filename.txt"')
    

    【讨论】:

    • 感谢 Amro。你很有帮助!
    【解决方案3】:

    在控制台运行程序:\\location\My programm.exe 'param 1' 'param 2'

    在 Matlab 中运行程序:system(['location\my proramm.exe' '"param 1"' '"param 2')

    pathApplicationForm = strcat('"C:\Users\Master\Google Drive\Bakalaura Darbs\Application Development for the Microscopic Models Calibration\Application Form\bin\Debug\Application Form.exe"');
    runParam = strcat(get(vEdit2,'String'), '\', get(vEdit3,'String'));
    VISSIM = strcat(get(vEdit1,'String'));
    system([pathApplicationForm ' "' VISSIM '" "' runParam '']);
    

    它正在工作^^

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多