Fixed point coder log10 implementation

15 visualizzazioni (ultimi 30 giorni)
I am using 20*log10(val) to get power in a dB
y = 20*log10(3)
But When i am using matlab coder to convert the in c/c++ code.I am gettig an error
Function 'log10' is not defined for values of class 'embedded.fi'.
Can someone help me with alternate way of doing dB calculation.
Thank you

Risposta accettata

Life is Wonderful
Life is Wonderful il 26 Dic 2020
qsb = fixed.Quantizer(numerictype(1,32,24));
y0 = quantize(qsb,20*fi(log(double(x)),1,32,24)/fi(log(double(10)),1,32,24)); % log(x)/log(10) for log base 10 i.e. log10
y1 = 20*log10(x);

Più risposte (2)

Darshan Ramakant Bhat
Darshan Ramakant Bhat il 19 Nov 2020
The function "log10" is supported for code generation in the latest version (R2020b) of MATLAB. You can find the list of supported functions in the below page :
  1 Commento
Life is Wonderful
Life is Wonderful il 19 Nov 2020
Thanks - I see, is there a way I can use with R2019b ?

Accedi per commentare.


Life is Wonderful
Life is Wonderful il 20 Nov 2020
I made a test and I don't see the expected result
I am still getting the error following error
??? Function 'log10' is not defined for values of class 'embedded.fi'.
My question - did you verify log10 ?
Below is the matlab version
>> ver
-----------------------------------------------------------------------------------------------------
MATLAB Version: 9.9.0.1524771 (R2020b) Update 2
MATLAB License Number: 40523231
Operating System: Microsoft Windows 10 Enterprise Version 10.0 (Build 18363)
Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
-----------------------------------------------------------------------------------------------------
MATLAB Version 9.9 (R2020b)
Fixed-Point Designer Version 7.1 (R2020b)
HDL Coder Version 3.17 (R2020b)
HDL Verifier Version 6.2 (R2020b)
MATLAB Coder Version 5.1 (R2020b)
Parallel Computing Toolbox Version 7.3 (R2020b)
  6 Commenti
Life is Wonderful
Life is Wonderful il 21 Nov 2020
Modificato: Life is Wonderful il 21 Nov 2020
I found the right implementation -
qsb = fixed.Quantizer(numerictype(1,32,24));
y0 = quantize(qsb,20*fi(log(double(x)),1,32,24)/fi(log(double(10)),1,32,24)); % log(x)/log(10) for log base 10 i.e. log10
y1 = 20*log10(x);
Question - Matlab fixed point suggestion using fi(value) is not reliable .I don't know why it suggest that results in overflow.
You can try fi(3)
WL =16
FL= 13
Signedness =1
Try , you can see overflow. For me its not clear . Please help me
Thanks

Accedi per commentare.

Categorie

Scopri di più su Single-Precision Conversion in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by