FFT scaling for periodic and aperiodic signals

  • Permalink
  • submit to reddit
  • Email
  • Follow


Hi all
I have a question on FFT scaling difference  between periodic and  a periodic signals.

if I have a periodic signal x1 (sinewave), the FFT of this signal is normalized by the number of points N to get the correct amplitude spectrum scale < abs(fft(x1))/N >.

However if there is aperiodic signal e.g. x2 (square pulse), the normalization by the number of points representing pulse amplitude (k) gives amplitude spectrum with a maximum of 1. 
what I know is that the spectrum of a square pulse is a sinc waveform of amplitude (A*w). where A is the pulse amplitude and w is the pulse width.

does this mean the normalization is different for periodic and aperiodic signals?
and if so, how does spectrum analyzers know how to normalize different signals?

Any hints?
many thanks



N = 4096;                % number of FFT points
ts = 1e-3;               % Sampling time
t = [0:N-1]*ts;             % Time Vector

x1 = sin(2*pi*1*t);  % Sinewave
X1 = abs(fft(x1))/N; % Amplitude spectrum of the sinewave

k = 2000;    % number of points representing pulse width 
x2 = [zeros(1,1000) ones(1,k) zeros(1,1096)]; % square pulse of width 2 seconds
X2 = abs(fft(x2))/k; % Amplitude Spectrum of the square pulse

subplot(2,1,1),plot(X1)
subplot(2,1,2),plot(X2)
0
Reply abees 10/30/2010 6:14:04 PM

See related articles to this posting


On Oct 30, 11:14=A0am, "abees Tero" <abee...@hotmail.com> wrote:
> Hi all
>...
>
> does this mean the normalization is different for periodic and aperiodic =
signals?
Yes
> and if so, how does spectrum analyzers know how to normalize different si=
gnals?
Spectrum analyzers don't know. In fact, the signal being analyzed may
have components that should be scaled in different ways.
>
> Any hints?
> many thanks
> ...

The three cases are signals that have a power spectrum (tone like),
signals that have a power spectral density (PSD) (noise like) and
signals that have an energy spectral density (ESD)(transients).

As I have posted here before:
-begin quote-
The PSD, ESD and power spectrum can be calculated via fft based
methods in Matlab.
Manufacturers of dynamic signal analyzers have provided these
functions, properly scaled, for years. Some have been nice enough to
accurately document their functions and make and keep the
documentation available.

Take a look at "Choose your Units!" from B&K:

http://www.bksv.com/doc/bo0438.pdf

and for more detail, "Signals and Units" on page 29 of:

http://www.bksv.com/doc/bv0031.pdf

For an discussion of the signal processing,
consider pages 5-21 of:

http://www.rssd.esa.int/SP/LISAPATHFINDER/docs/Data_Analysis/GH_FFT.pdf

Particularly "3 Introduction" on page 5 and "9 Scaling the results" on
page 15.
I consider "13 Testing the Algorithm" on page 21 and on as a more
practically oriented discussion of pwelch than the Matlab docs.
-end quote-

Dale B. Dalrymple
0
Reply dbd 10/30/2010 6:37:25 PM

dbd <dbd@ieee.org> wrote in message <1bded1a9-6241-4f2c-85be-d9020e5a2b78@t13g2000yqm.googlegroups.com>...
> On Oct 30, 11:14 am, "abees Tero" <abee...@hotmail.com> wrote:
> > Hi all
> >...
> >
> > does this mean the normalization is different for periodic and aperiodic signals?
> Yes
> > and if so, how does spectrum analyzers know how to normalize different signals?
> Spectrum analyzers don't know. In fact, the signal being analyzed may
> have components that should be scaled in different ways.
> >
> > Any hints?
> > many thanks
> > ...
> 
> The three cases are signals that have a power spectrum (tone like),
> signals that have a power spectral density (PSD) (noise like) and
> signals that have an energy spectral density (ESD)(transients).
> 
> As I have posted here before:
> -begin quote-
> The PSD, ESD and power spectrum can be calculated via fft based
> methods in Matlab.
> Manufacturers of dynamic signal analyzers have provided these
> functions, properly scaled, for years. Some have been nice enough to
> accurately document their functions and make and keep the
> documentation available.
> 
> Take a look at "Choose your Units!" from B&K:
> 
> http://www.bksv.com/doc/bo0438.pdf
> 
> and for more detail, "Signals and Units" on page 29 of:
> 
> http://www.bksv.com/doc/bv0031.pdf
> 
> For an discussion of the signal processing,
> consider pages 5-21 of:
> 
> http://www.rssd.esa.int/SP/LISAPATHFINDER/docs/Data_Analysis/GH_FFT.pdf
> 
> Particularly "3 Introduction" on page 5 and "9 Scaling the results" on
> page 15.
> I consider "13 Testing the Algorithm" on page 21 and on as a more
> practically oriented discussion of pwelch than the Matlab docs.
> -end quote-
> 
> Dale B. Dalrymple

Dear Dale,,,
I would like to thank you for your kind, fast, really useful response.
you cleared all my doubts.
thanks again.
regards,,,, 
0
Reply abees 10/30/2010 7:25:05 PM
comp.soft-sys.matlab 203603 articles. 536 followers. Post

2 Replies
960 Views

Similar Articles

[PageSpeed] 41


  • Permalink
  • submit to reddit
  • Email
  • Follow


Reply:

Similar Artilces:

Proper Scaling of FFT of an non-periodic signal
I am trying to calculate the FFT of some sampled data, and have had some trouble determining the correct way to scale the resulting FFT data. Technical note 1703 states to properly scale the FFT (Mx) of a signal (x), the FFT should be divided by N, where N=length(x) However, I have determined that this only applies for the case where the signal x is <periodic>. What I want to know is how to scale the FFT is the signal is NOT periodic. Is there a way to accomplish this? I need to determine the proper magnitude of the FFT for data resulting from an input sine-sweep, or from a series of...

FFT of a known periodic signal of arbitrary length with a radix-2 algorithm
I've browsed a bit, so hopefully I've got all my information in order. I haven't been able to find an answer for this specific problem. It's for image processing. I'm simplifying 2D regions by applying low-pass filters to their contours. Specifically, I take an 8-connected clockwise contour of (arbitrary) n points, and make two new functions, x(i) and y(i), out of the points' coordinates. Then I do a DFT on each, apply a Gaussian or low-pass cutoff filter, inverse DFT, and replot. It works like a charm if I use a naive O(n^2) DFT implementation - but of course, it'...

FFT scaling of array/FFT scaling of differential function
Hi, I have a problem with scaling my graphs for FFT functions. I am currently implementing forced oscillators and the result output is from the following code [t x] =ode45(@vanderpol, 0:2*pi/100:4000, [0 1]); This returns the correct output array. When i transform this however the graphs are not scaled- can someone please help? i used the following code to transform: fastft= abs(fft(x(1:6000)) I have looked at alot of different forum posts and can't get help with this (i have tried multiple methods) ... can anyone help me? Thanks in advance. ...

About FFT (Periodic, non-periodic)
I have read 'a guide to the FFT' in the 'File exchange' , but confusing about the FFT The author recommend the following commands when we'd like to see the spectrum in the frequency domain. 1. fftshift(fft(fftshift(�)))/Fs for (non-periodic signal) Here, Fs: sampling frequency 2. fftshift(fft(fftshift(�)))/Np for (periodic signal) Here, Np:number of samples But what's the difference? and Should i have to divide it by Np for periodic signal? beom lee wrote: > > > I have read 'a guide to the FFT' in the 'File exchange' > > , but co...

FFT Scaling to 0dB (full-scale)
Hello all, I have a basic question about the fft() function. Let's say I create a whitenoise signal that has peaks from +1 to -1. When I run a fft on this signal it shows me amplitudes in the positive dB! I thought that a full-scale signal should only have frequency peaks up to 0dB. Currently, I have peaks upwards of 25dB. Even when I scale the signal down to +0.6 and -0.6, I still see data higher than 0dB. Is there a way in Matlab to somehow tell the fft function what full-scale is equal to? Here is the code I have so far for a test... ============================================= ...

convolution between periodic signal and random signal
Hi all, I am trying to convolve a sine wave with a random signal. Instead of using conv function, I am multiplying them in the frequency domain and then taking the ifft. I have taken care of the zero padding issue in the time domain. The problem is instead of getting a dual-dirac histogram, I always end up with the histogram of random signal. Can anyone suggest a proper convolution code between a sine wave (or any periodic waveform) and random signal? Thanking everyone in advance..... Nitin Check the fft of the sine wave alone - do you get two peaks and zeros everywhere else? (To get this...

Divide periodic signal into periodic and nonperiodic components
Dear all, I would like to know is it possible to divide a periodic signal into 2 composite signals: one periodic and the other non-periodic? If possible, can anyone please give me a hint on how to do so ? Regards On 9 Feb, 14:01, "gehan Mustafa" <g...@gigi.com> wrote: > Dear all, > I would like to know is it possible to divide a periodic signal into 2 composite signals: one periodic and the other non-periodic? Periodic components are prefectly predictable. Try to use some sort of linear prdiction. Rune Rune Allnor <allnor@tele.ntnu.no> wrote in message <5b5e4...

Analyzing input signal and periodic signal generation
Hi! I need to do data acquisition of a voltage (sine wave) and at a specific angle of the ideal sine wave after a fixed number of periods have been acquired an analog signal has to be sent. Knowing the input signal's frequency, phase information I can guess the time to wait before the same point on the wave comes. I use 'get time.vi' and wait until the predicted time comes' using a while loop that checks if the real time is equal to the predicted time. Problem is program misses the target point. I mean if my predicted time is 1.324 ms although the program counts milliseconds it...

representing discrete periodic signal using sinusoidal signals
Hello All, I am trying to understand the concept of representing a discrete periodic signal using sinusoidal signals. (without going into detailed math), If my understanding is correct, a discrete periodic signal can be represented using a collection of sinusoidal signals of different frequencies. The sinusoidal signals would be amplitude scaled and would have different phases. Is my understanding broadly correct or is there any other factor involved in representation of these sinusoidal signals? Further, a) would the scaling factors be constant within a given signal? b) wou...

fft scaling
I found the following tech note on fft scaling: http://www.mathworks.com/support/tech-notes/1700/1702.html In playing with it, I noticed something that I don't understand. If I leave Fs at 1024 (a power of two), my amplitude spectrum's y-axis is accurately scaled. Any frequency sine wave I put in, I will see a matching peak in the amplitude spectrum. E.g. I put in a 1V sine wave at 100 Hz, I see 1V at 100 Hz in the amplitude spectrum. I can vary the frequency, and I see the same amplitude in the frequency spectrum as my source in time. However, if I change my sampling rate t...

fft from a signal
My purpose is to transform my time series B to the frequency domain. and then with a notch filter remove the specific frequency of 1/24[hour] I figured out this fft code for my data but I am not sure that the frequency is in Hertz or not? And I do not know how notch filter works? I recently started Matlab signal processing. I really appriciate if help me with this. N=length(B) %Time Sampling Interval=1[hour]=3600[second] =>FS=sampling frequency =[1/3600]HZ FS=1/3600; %time vector in second= (0:N-1)/FS %time vector in hour= t = ((0:N-1)/FS)/3600 %%signal in frequency domain NF...

scaled FFT
Hi, For F(u)=fft(x), we can get from matlab. But for F(u/a), a is a constant, could you please help me what's wrong with source code below? Since fft.m is a built-in function, source code is not open to public, I copied one from www.mathworks.com. so no need to doubt the correctness for fftx to calculate fft (fftx is equivalent to fft command, I have verified this). function y = fftx(x) %FFTX Fast Finite Fourier Transform. x = x(:); n = length(x); omega = exp(-2*pi*i/n); if rem(n,2) == 0 % Recursive divide and conquer. k = (0:n/2-1)'; w = omega.^k; u = fftx(x(1:2:n-1)); v = w.*ff...

Scaling the fft
Hi I am trying to perform an fft on some data but have been having trouble with the scaling of the frequency axis. I started testing things with gaussians. If one starts with a gaussian of full width half maximum of 1.386a then the resulting gaussian on transform is expected to have width 0.44/a. This is a well known mathematical result. I defined a number of gaussians of various widths and then took the fft of each. Each gaussian is defined over 32,768 points (2^15) and thus the fft returned equally has 2^15 points. For example define a gaussian with mean 0, standard deviation...

How to apply fft in matlab and see the waveform of fft of a given signal
I need help in matlab code for applying fft and perform fft waveform of a given signal....who can help me?? Chai wrote: > > > I need help in matlab code for applying fft and perform fft > waveform > of a given signal....who can help me?? perhaps My_Spectrum = fft(My_Signal); My_Spectrum_Conventional = fftshift(My_Spectrum); plot(real(My_Spectrum_Conventional),'r');hold on; plot(imag(My_Spectrum_Conventional),'r');hold off; maybe Dave Robinson Thanks for your kindness. I still working on my project.more question will be coming if you don mind helping me. s...

signal is periodic or not
i want the program to check whether a signal is periodic or not.please send me the program ...

Periodical signal!!
I�m drawing a signal from the data taken from a visa read, the problem is that the visa read give me 64 bytes and y draw the first period of my signal well, but when i catch the next 64 bytes the signal don�t looks like two periods, How can i attach the two packets to view my signal periodical?? &nbsp; Now i see something like this: &nbsp; &nbsp; &nbsp; &nbsp; Graf.JPG: http://forums.ni.com/attachments/ni/170/139081/1/Graf.JPG Hi! &nbsp; Answer depends on some questions. &nbsp; Does&nbsp;your hardware allow continuous acquisition mode? Do you know&nbsp;ac...

fft signal
Hi, im really struggling to interpret an FFT signal... :(.. i read all the websites, but too many equations in them.. can i please send someone a screenshot of one of my FFT's??, and then you can please help me interpret it? please, thanks, I can move my belly too for you after type doc fft or google fft but then it would cost 1 dolla, cheep? carlos ...

How to variate the Periode of x-scale when using the x-scale range proberty to something else?
Hi to all in forum! I got this VI, and i need it like it is plus one more feathure. I need to&nbsp;variate teh x-scale range when running this VI. But it is not possible when using the same proberty to somthing else. I tried&nbsp;but it shifted quickly between the running samplings and the range i wanted to&nbsp;appear. &nbsp; any suggestions wil be appreciated. regards Zamzam&nbsp;&nbsp; FlowReadChartHist2.vi: http://forums.ni.com/attachments/ni/170/176788/1/FlowReadChartHist2.vi Hello Zamzam, you get the values for the x-range from your chart. The values are cop...

Is it possible to create my own signal for example: The first period i got an amplitude of 1V and the next period i got an amplitude of 4V
Hello to everybody! &nbsp; &nbsp; Is it possible to create my own signal for example: The first period i got an amplitude of 1V and the next period i got an amplitude of 4V Responding to my own post.&nbsp; I just realized you wanted one cycle only at different amplitudes.&nbsp; Here is a vi that does this. &nbsp; AppendWaveforms.vi: http://forums.ni.com/attachments/ni/170/143891/1/AppendWaveforms.vi ...

FFT scaling #2
hi, The question is related to the scaling of FFT. Suppose I have N samples of a voltage signal sampled at fs. Then I take the N point FFT of the samples and consider the abs(fft()).^2. How do I convert the power obtained using FFT routine in dBVrms value? Is it dependent on fs? What is the math behind? Thanks, Sumeer. You'll have to do abs(fft()).^2/N^2 in order to find the power spectrum and multiply it by two to find the one-sided spectrum (to check what you are doing, the variance of your signal should be thesum of all the terms without the constant). Then, to convert it in dB, yo...

FFT of a DC signal ?????
I was wondering if the fft function works with a alternating signal that has a DC component to it ???? I ran it through a program I've written for AC signals and all I get is a huge spike at 0 Hz and nothing else. Any guru assistance would be appreciated Cheers Matt Matt wrote: > > > I was wondering if the fft function works with a alternating signal > that has a DC component to it ???? I ran it through a program I've > written for AC signals and all I get is a huge spike at 0 Hz and > nothing else. > > Any guru assistance would be appreciated Your "hu...

Extract Period of the signal
Dear All, I am trying to extract the period of the signal in time value. How can I do that for the below input signal: clear all; Fs=100; % Sampling Frequency N1=2; % Order or No.of periods % N2 = round((1/2)*Fs); N=round(Fs/6)+1;% No. of samples for 1's & 0's AQ = repmat([ones(1,N), zeros(1,N*2), -ones(1,N), zeros(1,N*2)],1,N1);% Rectangular Signal t=0:(1/Fs):(length(AQ)-1)/Fs; % Time scale % figure (1) plot(t,AQ,'*-','linewidth',2);grid; % plot hold on; % buffer_size = length(AQ)/2^N1;%working_! % buffer_size = round((1/2)*Fs);%wo...

Generating periodic signal
Hello, I want to generate a periodic signal. Therfore I have two vectors; one vector tp with the time values for one period and a vector yp with the signal data of this period. To create the periodic signal for n periods I can use repmat - not a big problem. Fr the timevalues, I need t create a vector like [tp, tp+T, tp+2*T, ...] with T the period of the signal respective. Is there a way to do this with a for loop? Michael Michael Salloker schrieb: > Hello, > > I want to generate a periodic signal. Therfore I have two vectors; one > vector tp with the time values for one...

FFT scaling and spectrogram
hello, I was getting the Fourier of two Gaussian waves as one moves over the other. Once this is done it I was to make a spectrogram of the result. I needed some help in the scaling of the FFT. This is creating a lot of problems because it is slowing down the processing speed. I need to some how get make MATLAB ignore the massive zero values. I also needed help in the displaying the spectrogram. CODE: Fs=50000; t = -20:1/Fs*10:20; %Carrier Sine Wave lambda = 1550e-9; freq= ((3*10^8)/lambda)*1e-12; %Gaussian Function tau_pulse = 0; FWHM_pulse = 10; A_pulse = 1; sigma_puls...