Matlab编程 - 反馈错误

时间:2015-07-27 08:09:14

标签: matlab sorting feedback

我正在尝试编写Matra编程Coursera课程的编程作为练习。这是我的问题:

  

编写一个名为sort3的函数,它接受三个标量参数。它使用if语句,可能是嵌套的   以递增的顺序在单个行向量中返回这些参数的三个值(或者更确切地说,   非递减顺序),即输出向量的元素之一等于最小的输入参数和   输出向量的元素三等于最大的输入参数。

这是我的代码:

function sv = sort3(x,y,z)

if nargin < 3
    error('must have at least three input argument');
else
    if ~isscalar(x) || x ~= fix(x)
        error('x needs to be a scalar');
    end
    if ~isscalar(y) || y ~= fix(y)
        error('y needs to be a scalar');
    end
    if ~isscalar(z) || z ~= fix(z)
        error('z needs to be a scalar');
    end
end

a=x;
b=y;
c=z;

if  a >= b
    t=a;
    a=b;
    b=t;
end
if b >= c
    t=b;
    b=c;
    c=t;
end
if a >= b
    t=a;
    a=b;
    b=t;
end

if nargout == 1
    sv=[a b c];
end

我在Matlab上得到了以下结果。

Problem 3 (sort3):
Feedback: Your program made an error for argument(s) -1.3719900292403, -0.639443998445333, 1.04704952581735

请帮帮我。

感谢。

1 个答案:

答案 0 :(得分:0)

当您将x与fix(x)进行比较时,程序将移至您编写的命令错误。 当您向函数传递十进制数时,显然x始终不等于fix(x),然后您的函数将始终以错误结束。 如果您只想使用标量或整数,您可以考虑在开始算法之前将函数修复应用于输入。