我正在尝试编写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
请帮帮我。
感谢。
答案 0 :(得分:0)
当您将x与fix(x)进行比较时,程序将移至您编写的命令错误。 当您向函数传递十进制数时,显然x始终不等于fix(x),然后您的函数将始终以错误结束。 如果您只想使用标量或整数,您可以考虑在开始算法之前将函数修复应用于输入。