我想发布一个Matlab代码,它需要用户的一些输入(单个字符串)。代码运行正常,但是当我尝试发布它时,我得到了
Error using input
Cannot call INPUT from EVALC.
Error in test (line 185)
userinput = input('Enter the code here\n', 's');
有解决方法吗?
答案 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
这将创建一个对话框,将输入的值生成为字符串,并允许您执行和发布代码