如何在MATLAB中获取double的自然对数?

时间:2014-08-13 22:20:21

标签: matlab casting natural-logarithm

我正在尝试一个数字的自然日志,我收到消息:

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'

2 个答案:

答案 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 

*记住日志通用公式→日志基数(数字)