我正在尝试一个数字的自然日志,我收到消息:
tf2 = 60*ln(B1);
Undefined function 'ln' for input arguments of type 'double'.
所以我尝试将数字转换成文档声称它会接受的浮点数 然后我收到错误信息:
float(B1);
Error using float (line 50)
The input argument to float was not a supported type. The only recognized strings are 'single' and 'double'. The input type was 'double'
然后我尝试将双重转换为单个并获得相同的错误,但它说:
f=single(B1);
float(B1);
Error using float (line 50)
The input argument to float was not a supported type. The only recognized strings are 'single' and 'double'. The input type was 'single'
答案 0 :(得分:4)
MATLAB中的自然日志只是log(x)
。你把两者混合在一起:
您收到的错误消息是因为未定义该函数。您将在此行中收到相同的错误:
bogus_function(1.23)
??? Undefined function or method 'bogus_function' for input arguments
of type 'double'.
答案 1 :(得分:0)
我知道这是一个古老的问题,但当我尝试这样做时,我没有找到一个好的答案,所以我会为别人写下我的解决方案。
首先,在matlab中没有实现ln操作的实现函数,但我们可以做到。 只记得日志库的更改公式是
log b(X)= log a(X)/ log a(B)
您可以轻松查看。
如果你想计算log 2(8) 那么你需要做的是计算log 10(8)/ log 10(2) 你可以找到:log 2(8)= log 10(8)/ log 10(2)= 3 如果你想计算ln(x),那么你只需要将基数改为e。
ln(x)= log 10(x)/ log 10(e)
所以,只需在matlab中编写该代码
my_ln= log 10 ( number ) / log 10 ( exp(1) );
你也可以将它作为一个函数,并在需要时调用它,
function [val] = ln_fun(number)
val = log 10 (number)/ log 10 ( exp(1) );
end
*记住日志通用公式→日志基数(数字)