【问题标题】:Providing input parameters from the Windows command line to a Matlab function compiled as a .exe从 Windows 命令行向编译为 .exe 的 Matlab 函数提供输入参数
【发布时间】:2013-01-21 01:33:36
【问题描述】:

您好,我使用mcc 将 Matlab 函数转换为独立的 .exe。当我在 windows 命令提示符下运行 .exe 文件时,它返回以下错误:

  1. 输入参数太多 // 当我给出两个输入时,应该是
  2. 当我给出一个输入时,第一个参数应该有与输入变量一样多的列与独立的输入值集一样多的行。

我使用命令独立构建:“mcc -mv myfile.m -a datfile.fis” ----------- 构建过程正常。但是,当我在 Windows 提示符下使用此命令“myfile.exe 2.0 20.2”运行时,会出现上述错误。我的程序接受两个输入并给出一个输出。我已经运行 Matlab 教程 magicsquare.m 在同一台计算机上转换 magicsquare.exe 并且工作正常 有人可以帮忙吗? 注意转换之前程序在matlab中运行良好我在MATLAB中得到如下输入

我的文件([2.0 20.2])

【问题讨论】:

  • 如果 myfile([2.0 20.2]) 在 Matlab 中正常工作,那么您的函数显然只需要 one 输入,因为 [2.0 20.2]one 变量(特别是2*1 向量)。此外,我相信来自 Windows 命令行的任何输入都会被“编译”的 Matlab 解释为字符串,因此您需要在函数中使用字符串输入,然后使用函数顶部的 str2num 将它们转换。
  • 另外,请注意 Windows 命令行在任何空白字符处分割您的参数。

标签: matlab exe command-prompt input-parameters


【解决方案1】:

当您从 Windows/DOS 命令行运行可执行文件时,参数作为字符串传递给可执行文件 - 就像您在 MATLAB 中将您的函数称为 myfile "2.0" "20.2"

这些输入中的每一个都是一个字符数组(例如包含“2”、“.”和“0”的 ASCII 值),因此您的函数可能会出错,因为输入太多。

尝试重写您的函数,使其使用str2numstr2double 将输入转换为数字。或者将您的输入存储在一个文件中,并设计您的函数以接受文件名作为输入。

如果您希望它在 MATLAB 中运行和部署时的行为有所不同,请在 if 子句中使用内置函数 isdeployed 来切换行为。

【讨论】:

    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    相关资源
    最近更新 更多