0

数値の自然対数を取得しようとすると、次のメッセージが表示されます。

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'
4

2 に答える 2

4

MATLAB の自然対数は単純にlog(x)です。あなたは2つを混ぜています:

関数が定義されていないため、表示されるエラー メッセージが表示されます。次の行でも同じエラーが発生します。

bogus_function(1.23)
??? Undefined function or method 'bogus_function' for input arguments
of type 'double'.
于 2014-08-13T22:31:25.230 に答える
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 

※対数の一般式を覚える→対数底(数)

于 2017-04-14T11:09:42.690 に答える