Matlab:如何发布需要用户输入的脚本

时间:2011-12-09 12:24:20

标签: matlab

我想发布一个Matlab代码,它需要用户的一些输入(单个字符串)。代码运行正常,但是当我尝试发布它时,我得到了

Error using input
Cannot call INPUT from EVALC.
Error in test (line 185)
userinput = input('Enter the code here\n', 's');

有解决方法吗?

4 个答案:

答案 0 :(得分:4)

如果您点击发布按钮旁边的小下拉菜单,您会看到一个名为编辑发布配置的项目。如果选择(当您要发布的文件在编辑器中打开时),您将看到有一个可以编辑的MATLAB表达式。这是在发布脚本时执行的MATLAB代码,默认情况下它只是脚本的名称。

假设您的脚本名为myscript,因此默认情况下,已发布的表达式只是

myscript

您可以将表达式编辑为:

userinput = 'example';
myscript

然后当你点击发布按钮时会运行。

在您的脚本中,更改行

userinput = input('Enter the code here\n', 's');

if ~exist('userinput', 'var')
    userinput = input('Enter the code here\n', 's');
end

现在您的脚本将正常运行(假设您在工作区中没有变量'userinput'),您的脚本将成功发布。

希望有所帮助!

答案 1 :(得分:1)

如果要在不执行代码的情况下发布matlab文件(xyz.m),请使用以下内容。

% To stop executing the script before publish

opts.evalCode = false

% Similarly here are some more options 

% If you want to publish only comments and not code, then 

opts.showCode = false

% Publish doc format, html by default

opts.format = 'html'

% Catch error before publishing

opts.catchError = true

% Publish doc output path

%opts.outputDir = <path>

% Finally publish 

publish('xyz.m',opts)

答案 2 :(得分:0)

在您要执行的代码中没有直接使用input()的方法。发布结果。解决方法是可行的。我只想将代码分成两个(或更多)部分。第一部分将使用input()然后发布()。其他部分将是实际代码,而第一部分在第二部分形成包装。第一部分中的publish()将调用第二个(和/或其他)部分。这样可以灵活地控制生成的输出中显示的内容,以正确指示正在使用input()。

答案 3 :(得分:0)

而不是使用输入命令而是使用SplitContainer。所以你会有;

inputdlg

这将创建一个对话框,将输入的值生成为字符串,并允许您执行和发布代码