MatLab:检查行向量中的整数时出错

时间:2013-12-02 19:05:34

标签: matlab

我使用MatLab为Horner的算法编写以下代码

function [answer ] = Simple( a,x )
%Simple takes two arguments that are in order and returns the value of the
%polynomial p(x). Simple is called by typing Simple(a,x)
% a is a row vector
%x is the associated scalar value
n=length(a);
result=a(n);
for j=n-1:-1:1 %for loop working backwards through the vector a  
   result=x*result+a(j);
end
answer=result;
end

我现在需要添加错误检查以确保调用者在行向量a中使用整数值。

对于之前的整数检查,我使用了

if(n~=floor(n))
    error(...

但这只是一个单一的值,我不确定如何对a中的每个元素进行检查。

2 个答案:

答案 0 :(得分:7)

你(至少)有两个选择。

1)使用any

if (any(n ~= floor(n)))
  error('Bummer. At least one wasn''t an integer.')
end

或者更简洁......

assert(all(n == floor(n)), 'Bummer. At least one wasn''t an integer.')


2)使用功能更强大的validateattributes

validateattributes(n, {'double'}, {'integer'})

此功能也可以检查十多种其他内容。

答案 1 :(得分:2)

相同的数学运算,但现在检查每个元素。试试这个:

if any(n~=floor(n))
    error(...