【发布时间】:2015-07-27 08:09:13
【问题描述】:
我正在尝试将有关 Matlab 编程的 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
请帮帮我。
谢谢。
【问题讨论】:
-
对我来说,它适用于整数值(包括小数部分为零的双精度数)。不过,添加
x ~= fix(x)会引发 “x 必须是标量” 对于十进制数的错误,因此您应该考虑将其删除(当然对于所有变量)。