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

use*_*633 3 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
Run Code Online (Sandbox Code Playgroud)

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

对于我以前使用的整数检查

if(n~=floor(n))
    error(...
Run Code Online (Sandbox Code Playgroud)

但这是一个单一的值,我不确定如何检查a中的每个元素.

Jef*_*her 7

你有(至少)两个选择.

1)使用any:

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

或者更简洁......

assert(all(n == floor(n)), 'Bummer. At least one wasn''t an integer.')
Run Code Online (Sandbox Code Playgroud)


2)使用更强大的能力validateattributes:

validateattributes(n, {'double'}, {'integer'})
Run Code Online (Sandbox Code Playgroud)

此功能也可以检查十几种其他内容.