fixed point taylor sine/cosine approximation model

조회 수: 8 (최근 30일)
Gary
Gary 2022년 6월 19일
댓글: Gary 2022년 7월 17일
Can anybody share sine/cosine taylor approx model which is compatible with hdl coder?
  댓글 수: 2
Walter Roberson
Walter Roberson 2022년 6월 19일
is there a reason why you are not using https://www.mathworks.com/help/fixedpoint/ref/cordicsin.html
Gary
Gary 2022년 6월 21일
I do not wish to use the inbuilt model of simulink but to build one.

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

답변 (2개)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2022년 6월 19일
WHy not to use matlab's built-in taylor() expansion fcn: https://www.mathworks.com/help/symbolic/sym.taylor.html?s_tid=doc_ta
E.g.:
syms x
taylor(sin(x), x, pi)
ans = 
taylor(cos(x), x, pi/2)
ans = 
  댓글 수: 20
Walter Roberson
Walter Roberson 2022년 6월 22일
You need order 22 (x^21) to have an error of less than 1/1000
syms x
f = sin(x);
target = 1/1000;
for order = 2:50
t = taylor(f, x, 0, 'order', order);
val_at_end = subs(t, x, 2*pi);
if abs(val_at_end) < target; break; end
end
order
order = 22
t
t = 
fplot([t, f], [0 2*pi])
fplot(t-f, [0 2*pi])
Gary
Gary 2022년 6월 23일
Thank you . It was excellent analysis. I am clear now.

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


Kiran Kintali
Kiran Kintali 2022년 7월 4일
HDL Coder supports code generation for single precision trigonometric functions.
Getting Started with HDL Coder Native Floating-Point Support
Taylor series approximation using HDL Coder
If you want to build Taylor series approximation by youself you could build using basic Math operations and sufficient amount of fixed-point conversion.
syms x
f = sin(x);
T2sin = taylor(f, x, 'Order', 2); % T2sin = x
T4sin = taylor(f, x, 'Order', 4); % T4sin = -x^3/6 + x
T6sin = taylor(f, x, 'Order', 6); % T6sin = x^5/120 - x^3/6 + x
On you build such a model you can further use optimizations such as multiplier partitioning, resource sharing and pipelining options to optimize the model for area/performance/latency/power.
  댓글 수: 2
Walter Roberson
Walter Roberson 2022년 7월 4일
They were already using a model with basic math blocks to calculate Taylor series of sine and cosine. I showed, however, that in their target range 0 to 2π that the error for their model was unacceptable, and that to bring the error to 1/1000 you need taylor order 21.
Gary
Gary 2022년 7월 17일
I managed to get 3 digits accuracy sine/cosine using chebhyshev polynomials(order 3). Thank you for sharing all the resources

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

태그

제품


릴리스

R2014a

Community Treasure Hunt

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

Start Hunting!

Translated by