我尝试使用sqrt()
函数计算类型 int32 变量的平方根,但我收到此错误:未定义函数'sqrt'表示输入参数
输入'int32'。然后我发现有一个名为isqrt()
的函数计算整数变量类型的平方根,但它在我的Matlab版本(R2013a)中不存在。我试着下载这个功能,但我找不到它。我尝试将值提供给(1/2)但整数只能提升到正整数幂。
有没有办法做到这一点?
答案 0 :(得分:3)
您可以使用匿名函数编写自己的isqrt
:
%// variable
A = int32(16)
%// helper function
isqrt = @(x) int32(sqrt(double(x)))
%// root
iroot = isqrt(A)
如果你确定它实际上可以计算根,那么这个函数应该就这样使用,因为将一个十进制值转换为int32(...)
会使它四舍五入,而不会显示错误。
因此,为了使其更加健壮,您可以创建一个类似的函数:
function iroot = isqrt(integer)
root = sqrt(double(integer));
if mod(root,1) == 0
iroot = int32( root );
else
disp('Input has no integer root')
end
end
答案 1 :(得分:1)