Spectrum analysis (Fourier)
07-29-2015, 12:13 PM
Post: #1
 Aries Member Posts: 159 Joined: Oct 2014
Spectrum analysis (Fourier)
Hello everyone,
let's suppose we have the following signal: f(t)=4+(4/pi)*sin(2*pi*800*t)+(4/(3*pi))*sin(2*pi*2400*t)+(4/(5*pi))*sin(2*pi*4000*t).
Ok, this is the resulting waveform (time domain, 4 is the average value):

Now the (banal) question is, how can I determine (i.e. to plot) the spectrum (in the frequency domain) of the function on the Prime, something like this below ?

Any hint would be helpful.
TIA and best,

Aries
07-30-2015, 02:29 AM (This post was last modified: 07-30-2015 02:30 AM by Brad Barton.)
Post: #2
 Brad Barton Member Posts: 194 Joined: Jan 2014
RE: Spectrum analysis (Fourier)
You're looking for the FFT (Fast Fourier Transform) algorithm. I'd give you more info, but I've loaned out the book I had for it. Google FFT, and you should be able to find what you're looking for.

There are some constraints, such as needing 2^n digitized samples and a couple other things, but it's definitely doable.
08-12-2015, 11:52 AM
Post: #3
 Aries Member Posts: 159 Joined: Oct 2014
RE: Spectrum analysis (Fourier)
Thanks for your help, Brad, you're right, FFT algorithm is really what I was looking for and I've found it:
http://www.codeproject.com/Articles/9388...-algorithm
Now I hope to succeed in implementing the Danielson-Lanzcos algorithm into the HP Prime.
Best,

Aries ;-)
08-13-2015, 09:43 PM (This post was last modified: 08-17-2015 07:16 PM by toshk.)
Post: #4
 toshk Member Posts: 195 Joined: Feb 2015
RE: Spectrum analysis (Fourier)
(i don't have Hp prime to try it.) but works on Emulator.
the App assumes that you place your signal function on F0(X).
visualize your signal function (play with scales/auto zoom or whatever you want) for better representation of the signal. Type
>>Spect>>Enter.

PHP Code:
#pragma mode( separator(.,;) integer(h32) )SamX();dftY();Set();export Spect()BEGINlocal dmin,dmax,dx;dmin:=Function.Xmin;dmax:=Function.Xmax;dx:=(dmax-dmin)/1024;L0:=makelist(X,X,dmin,dmax,dx);SamX();dftY();L5:=makelist(X,X,0,1/dx,(1/dx)/1025);Set();END;#casSamX()BEGINL1:=F0(L0);END;#end#casdftY()BEGINlocal n;L4:=mat2list(fft(L1));FOR n FROM 1 TO size(L4) STEP 1 DOL4(n):=approx(abs(L4(n))*(2/1024));END;END;#endSet()BEGINstartapp("Statistics 1Var");local n;FOR n FROM 1 TO 64 STEP 1 DOL8(n):=L5(n);L9(n):=L4(n);end;D1:=L8;D2:=L9;Statistics_1Var.H1:={'D2','D1','5'};CHECK(1);startview(1,1);END;
08-14-2015, 08:48 AM
Post: #5
 Aries Member Posts: 159 Joined: Oct 2014
RE: Spectrum analysis (Fourier)
Thanks for your great app, toshk, very very kind of you, it's just what I was looking for and thanks for your great tools on control systems design and analysis (Bode, Nyquist and Nichols charts) too ;-)
What about Routh-Hurwitz and the root-locus methods ?
Are you going to implement those on your future versions ?
Happy August holidays,

Aries ;-)
08-14-2015, 09:37 AM
Post: #6
 DrD Senior Member Posts: 1,133 Joined: Feb 2014
RE: Spectrum analysis (Fourier)
The posted code has a syntax error: H1:={'D2','D1','5'}; in the Set() procedure.
I think this is due to the use of H1 as a list variable, which is a global reserved variable of type real.

-Dale-
08-14-2015, 04:33 PM (This post was last modified: 08-14-2015 04:36 PM by toshk.)
Post: #7
 toshk Member Posts: 195 Joined: Feb 2015
RE: Spectrum analysis (Fourier)
(08-14-2015 09:37 AM)DrD Wrote:  The posted code has a syntax error: H1:={'D2','D1','5'}; in the Set() procedure.
I think this is due to the use of H1 as a list variable, which is a global reserved variable of type real.

-Dale-
Open Statistics 1var
Shift>>1
recompile the empty Statistics 1Var.
and recompile my code too.
08-14-2015, 05:06 PM
Post: #8
 toshk Member Posts: 195 Joined: Feb 2015
RE: Spectrum analysis (Fourier)
(08-14-2015 08:48 AM)Aries Wrote:  Thanks for your great app, toshk, very very kind of you, it's just what I was looking for and thanks for your great tools on control systems design and analysis (Bode, Nyquist and Nichols charts) too ;-)
What about Roth-Hurwitz and the root-locus methods ?
Are you going to implement those on your future versions ?
Happy August holidays,

Aries ;-)
My thoughts:
For Root-Locus method i think Geometric App is a good candidate. but not animated enough to move points along a path. or move a set of conjugate pairs to its new locations.
Also too many rules associated with this method...nevertheless if done on Matlab is doable on temperament Prime.(just less real estate screen).

Roth-Hurwitz: i always wanted to implement that on prime...one of these days i will.
i tend to use Ackermann's method (space vector) for calculating sensitivity gain K.
08-14-2015, 05:46 PM
Post: #9
 Tim Wessman Senior Member Posts: 2,293 Joined: Dec 2013
RE: Spectrum analysis (Fourier)
(08-14-2015 04:33 PM)toshk Wrote:  Open Statistics 1var
Shift>>1
recompile the empty Statistics 1Var.
and recompile my code too.

Hello,

It is always a good idea to fully qualify your app functions - especially for something being shared.

Statistics_1Var.H1 would work no matter where the user might be.

TW

Although I work for HP, the views and opinions I post here are my own.
08-14-2015, 06:24 PM (This post was last modified: 08-14-2015 06:42 PM by toshk.)
Post: #10
 toshk Member Posts: 195 Joined: Feb 2015
RE: Spectrum analysis (Fourier)
(08-14-2015 05:46 PM)Tim Wessman Wrote:
(08-14-2015 04:33 PM)toshk Wrote:  Open Statistics 1var
Shift>>1
recompile the empty Statistics 1Var.
and recompile my code too.

Hello,

It is always a good idea to fully qualify your app functions - especially for something being shared.

Statistics_1Var.H1 would work no matter where the user might be.

Noted.....and fixed. Thanks.
The code was meant for Spectrum(App) based on Statistics_2vars, then to be based on Statistics_1var and finally it striped it done to just app.
Any chance to bring back fine(.) or fine dash(-) or tinnier version of the icons in Statistics_2var App? (real estate price is less attractive with is jumbo icons     in some plots sometimes).
09-06-2015, 12:17 PM
Post: #11
 Aries Member Posts: 159 Joined: Oct 2014
RE: Spectrum analysis (Fourier)
(08-14-2015 05:06 PM)toshk Wrote:
(08-14-2015 08:48 AM)Aries Wrote:  Thanks for your great app, toshk, very very kind of you, it's just what I was looking for and thanks for your great tools on control systems design and analysis (Bode, Nyquist and Nichols charts) too ;-)
What about Roth-Hurwitz and the root-locus methods ?
Are you going to implement those on your future versions ?
Happy August holidays,

Aries ;-)
My thoughts:
For Root-Locus method i think Geometric App is a good candidate. but not animated enough to move points along a path. or move a set of conjugate pairs to its new locations.
Also too many rules associated with this method...nevertheless if done on Matlab is doable on temperament Prime.(just less real estate screen).

Roth-Hurwitz: i always wanted to implement that on prime...one of these days i will.
i tend to use Ackermann's method (space vector) for calculating sensitivity gain K.

Thanks toshk, great ideas and I'm looking forward to your updates ;-)
Best,

Aries :-)
 « Next Oldest | Next Newest »

User(s) browsing this thread: