如何在MATLAB中的函数中使用多个用户输入?

如何在MATLAB中的函数中使用多个用户输入?,matlab,Matlab,我很难编写一个算法,将三个数字作为用户的输入,并计算它们的最大值。我试图通过使用函数来实现这些,但是,我得到一条错误消息:“未定义的函数'calc'用于'char'类型的输入参数。” 无标题(第2行)计算错误(数字);” 这是我的代码:(我不熟悉编码,所以可能会有其他类型的错误:) 您的第一个错误是输入。它只从用户处获取一个字符串,但您需要三个数字。 第二行是脚本中的下一行。计算数字时,应将输出发送到变量。您还应该更改calc参数 将此代码放在脚本中,而不是放在代码中: number1= inp

我很难编写一个算法,将三个数字作为用户的输入,并计算它们的最大值。我试图通过使用函数来实现这些,但是,我得到一条错误消息:“未定义的函数'calc'用于'char'类型的输入参数。”

无标题(第2行)计算错误(数字);”

这是我的代码:(我不熟悉编码,所以可能会有其他类型的错误:)


您的第一个错误是
输入
。它只从用户处获取一个字符串,但您需要三个数字。
第二行是脚本中的下一行。计算数字时,应将输出发送到变量。您还应该更改
calc
参数

将此代码放在脚本中,而不是放在代码中:

number1= input('Enter number1:');
number2= input('Enter number2:');
number3= input('Enter number3:');
 maxi=calc(number1,number2,number3)
%---------------------------------------------------  
function [ maxi ] = calc( numbers1,numbers2,numbers3 )
%UNTİTLED2 Summary of this function goes here
%   Detailed explanation goes here

maxi= numbers1;

if numbers2>maxi
        maxi= numbers2;
end

if numbers3>maxi
        maxi= numbers3;
end

end
请参考阅读:

正如您所说的“我是编码新手”,我想我应该描述几种不同的方法来实现这一点

读取输入

  • 你可以按照H.Ghassami的建议一个接一个地阅读输入。 这可能是更好的选择,因为存在一些故障处理 内置的。用户一次只能输入一个输入,并且没有输入 检查输入是否可计算(来自的数字或变量 当前工作区)。芦丁可以通过添加一个变量来获取输入的数量,从而变得更一般

    numberOfInputs  = 3;
    number = zeros(1, numberOfInputs);
    for idx = 1:numberOfInputs
        % Get the number of inputs declared in numberOfInputs  
        number(idx) = input( sprintf('Enter number %d: ', idx));
    end
    
  • 您还可以让用户一次输入所有数字,例如在您的问题中,在
    输入中添加第二个参数“s”。输入现在被视为字符串。用户必须以某种方式分隔输入的数字,最好使用空格。然后必须将字符串转换为数字向量

    numberOfInputs  = 3;
    number = input( sprintf('Enter %d numbers separated by whitespaces\n', numberOfInputs), 's');
    number = str2num(number); % Convert to number array
    
    您可能应该对数字数组进行一些检查,以查看它是否有效(正确数量的数字)

  • 获取最大值

    Matlab为此提供了一个内置函数。这样你就可以写了

    maxNumber= max(number);
    
    或者,如果您想在练习中使用
    if
    结构,您可以使用
    for
    循环使其更通用

    maxNumber = number(1);
    for idx = 2:numberOfInputs
        if maxNumber < number(idx)
            maxNumber = number(idx);
        end
    end
    

    这对我帮助很大:)。如果是你的答案,请勾选
    maxNumber = number(1);
    for idx = 2:numberOfInputs
        if maxNumber < number(idx)
            maxNumber = number(idx);
        end
    end
    
    function maxNumber = getMaxInput(numberOfInputs)