我使用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中的每个元素进行检查。
答案 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(...