필터 지우기
필터 지우기

Fixed point coder log10 implementation

조회 수: 8 (최근 30일)
Life is Wonderful
Life is Wonderful 2020년 11월 19일
답변: Life is Wonderful 2020년 12월 26일
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

채택된 답변

Life is Wonderful
Life is Wonderful 2020년 12월 26일
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);

추가 답변 (2개)

Darshan Ramakant Bhat
Darshan Ramakant Bhat 2020년 11월 19일
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
Life is Wonderful
Life is Wonderful 2020년 11월 19일
Thanks - I see, is there a way I can use with R2019b ?

댓글을 달려면 로그인하십시오.


Life is Wonderful
Life is Wonderful 2020년 11월 20일
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
Life is Wonderful
Life is Wonderful 2020년 11월 20일
편집: Life is Wonderful 2020년 11월 20일
May I know what is the difference ?
Why No Fraction length ?
How did you arrive to the conclusion ?
what if y = 20*fi(log(double(x)),1,16,FL) is considerd ?if FL is 16- we get overflow but correct conversion value
Can please share the explanation in case of WL = 8,16,24,32,64- what should be the FL ?
What is range , slope , bias , resolution & precision in that case.
When do we see Overflow and Underflow . Why double is considerd that unsupported in fixed point converter?
I think log (Natural logarithm) is unsupported. We need common logarithm base 10.
How enable logging Mode fipref ? How it help me in verification
Can you please help?Thank you!
Life is Wonderful
Life is Wonderful 2020년 11월 21일
편집: Life is Wonderful 2020년 11월 21일
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

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Generating Code에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by