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

时间:2016-09-05 08:48:12

标签: matlab

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

  

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

这是我的代码:(我是编码的新手,因此可能存在其他类型的错误:))

numbers= input('Enter three numbers to find out maximum of them:','s');
 calc(numbers);
 maxi

function [ maxi ] = calc( numbers(1),numbers(2),numbers(3) )
%UNTİTLED2 Summary of this function goes here
%   Detailed explanation goes here

maxi= numbers(1);

if numbers(2)>maxi
        maxi= numbers(2)
end

if numbers(3)>maxi
        maxi= numbers(3)
end

end

2 个答案:

答案 0 :(得分:1)

正如你所说“我是编码新手”,我想我会为此描述几种不同的方法。

阅读输入

  1. 你可以像 H.Ghassami 那样建议并逐一阅读输入。 这可能是更好的选择,因为有一些故障处理 内置于其中。用户一次只能输入一个输入 检查输入是否可评估(数字或变量来自 当前的工作空间)。通过为要获得的输入数量添加变量,rutin可以更加通用。

    $(document).ready(function() {
    
      $('#example').DataTable( {
        "bPaginate": true,
        "processing": true,
        "bServerSide": true,
        ajax: {
            url: 'https://api.myjson.com/bins/1egsx',
            dataSrc: function ( json ) {
                        // Store entire data in sessionStorage
                        // return the first 10 entries only for now
                        return json.data.slice(0,10);
                     },
        },
        columns: [
            { data: 'account_id' },
            { data: 'name' },
            { data: 'email' }
        ],
      });
    });
    
  2. 您也可以让用户一次性输入所有数字,如问题中的示例所示,向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'。输入现在被视为字符串。用户必须以某种方式分隔输入数字,最好是用空格。然后,您必须将字符串转换为数字向量。

    input

    您应该对数字数组进行一些检查,看它是否有效(正确数量的数字)

  3. 获取最大值

    Matlab有一个buildin功能。所以你可以写

    numberOfInputs  = 3;
    number = input( sprintf('Enter %d numbers separated by whitespaces\n', numberOfInputs), 's');
    number = str2num(number); % Convert to number array
    

    或者如果您(也许是为了练习)想要使用maxNumber= max(number); 结构,可以使用if循环使其更通用

    for

    -

    整个解决方案可以封装在函数

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

答案 1 :(得分:0)

你的第一个错误是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 参数。

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

return

参与阅读:http://matlabgeeks.com/tips-tutorials/getting-user-input/