Article View: comp.dsp
Article #2418Re: Non-Linear Interpolation-Help!
From: Randall Judd
Date: Tue, 09 Jan 1990 19:21
Date: Tue, 09 Jan 1990 19:21
21 lines
1631 bytes
1631 bytes
In article <1697@rodan.acs.syr.edu>, isr@rodan.acs.syr.edu (Michael S. Schechter - ISR group account) writes:
>
> Hi, I need to generate 'nice' sine-wave signals with a 56001 chip.
> The built-in ROM table makes this rather simple, except I need
> to interpolate (depending on frequency) as many as 40 points between
> the sine wave table values. No, I don't have enough memory to store
> a full quarter-cycle of my waveform. If interpolating 40 points is
> undoable, I HAVE to be able to get at least 10 points.
> ---Thanks,
> Mike Schechter InterNet:isr@rodan.acs.syr.edu
Have you thought about using
sin(theta + Dtheta)=sin(theta)*cos(Dtheta) + cos(theta)*sin(Dtheta)
cos(theta + Dtheta)=cos(theta)*cos(Dtheta) - sin(theta)*sin(Dtheta)
which are of the form
a(n+1)=a(n)b0+b(n)a0 and b(n+1)=b(n)b0-a(n)a0
You would want to update your sin and cos at table values (to prevent error
propagation), and if Dtheta is a constant you would only need to calculate
cos(Dtheta) and sin(Dtheta) once, or load it in as a constant. Since Dtheta
is small you should be able to use a short taylor series.
Technical Details
Message-ID:
<5274@blake.acs.washington.edu>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!tut.cis.ohio-state.edu!ucsd!ogicse!blake!juddReferences:
<1697@rodan.acs.syr.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!tut.cis.ohio-state.edu!ucsd!ogicse!blake!judd From: judd@blake.acs.washington.edu (Randall Judd) Newsgroups: comp.dsp Subject: Re: Non-Linear Interpolation-Help! Summary: Using trig identities for interpolation of sine wave Message-ID: <5274@blake.acs.washington.edu> Date: 9 Jan 90 19:21:05 GMT References: <1697@rodan.acs.syr.edu> Organization: Univ of Washington, Seattle Lines: 21