Matlab函数 - 询问给定参数的用户输入

时间:2014-10-18 03:59:33

标签: matlab function input name-value basicnamevaluepair

我有一个Matlab function,它有许多名称 - 值参数输入。对于某些参数名称,用户可以选择许多可能的值(并不总是很明显)。我想做的是, IF 用户调用名称,但没有给出值,那么 Matlab会显示可能的条目 AND THEN 接受用户的输入。

例如,我有一个函数,如:

function getSomeData( varargin )

p=inputParser;
defaultData='abc';

addParameter(p, 'Data', defaultData);

parse(p,varargin{:});

end

如果用户要在命令窗口中调用该函数,例如:

>> getSomeData('Data')

其中用户未给出'Data'的值,窗口将显示并提示

>> getSomeData('Data')
No value for 'Data' Given
Possible Values of 'Data' are:
'abc'
'def'
'other'

Please input your 'Data':

我可以使用result=input(prompt)函数。

非常感谢任何帮助或建议!干杯

1 个答案:

答案 0 :(得分:0)

我可以请您指定输入内容的复杂程度。您要么来自java并且认为您需要创建一个I / O对象才能读取输入,否则您的问题会更复杂,描述会给人留下印象。

否则,我会在这里给你一个不那么复杂的前进设计。一种方法是使用nargin属性,该属性查找函数的输入数。与nargin一起使用if语句(或switch-case?)。

if nargin==0
    % print alternative inputs with disp or fprintf.
    % This alternative can also be replaced with comments (single block with
    % no empty rows) right below the function. This will then be seen with
    % the `help funName` command

elseif nargin==1
    % Print description + permitted values. This can be done from a
    % switch-case statement (if you want the switch-case statement
    % can be placed in an external function).

elseif ~mod(nargin,2)
    %parse input pairs and do the calculations.

else
    error('wrong number of input arguments');
    % or
    % fprintf('wrong number of input arguments\n');
    % set outputs to '', {}, [], ...
    % return;
end

我希望这有帮助,即使它不完全是你提出的解决方案。然而,这是一个简单的解决方案,其优点是不会混淆信息部分和执行部分。我的猜测是,这是一种使用I / O而不实现复杂解析器的便捷方式。

这些问题通常由具有许多不同命令的复杂解析器解决(与cmd提示符(windows)的终端(基于unix)相比)。