【问题标题】:Matlab programming - Feedback errorMatlab编程 - 反馈错误
【发布时间】: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 必须是标量” 对于十进制数的错误,因此您应该考虑将其删除(当然对于所有变量)。

标签: matlab sorting feedback


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 2018-06-24
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多