Sam*_*NLP 2 matlab logarithm exponential
为什么a是不一样b的matlab?
a = signal;
b = exp(log(signal));
Run Code Online (Sandbox Code Playgroud)
如果我绘制a和b,信号不一样,有什么帮助吗?
负数的对数-x是y = log(x)+pi*1i.因此,当您应用指数函数时,y您将留下零虚部(或看起来像零的东西).试试这个例子:
format long
x = -1;
y = exp(log(x))
abserr = abs(x-y)
Run Code Online (Sandbox Code Playgroud)
在这里阅读有关复数对数的更多信息.
当然,由于浮点也可能存在不准确性.如果您的signal值接近1/eps(或-1/eps),则绝对误差可能尤为显着.尝试
x = 1/eps;
y = exp(log(x));
abserr = abs(y-x)
relerr = abs(y-x)/abs(x)
Run Code Online (Sandbox Code Playgroud)
返回
abserr =
11.500000000000000
relerr =
2.553512956637860e-15
Run Code Online (Sandbox Code Playgroud)
请注意,相对误差很小.在浮点计算中,相对误差通常是我们希望控制的.