Efficient DC Estimator Algorithms for Half-Cycle Sampled Signals

AI Thread Summary
The discussion focuses on methods to remove the DC component from a half-cycle sampled signal, specifically a complex function involving sine and cosine terms. Participants suggest using Fourier Transform techniques, such as applying a Fast Fourier Transform (FFT) and zeroing the DC component, or implementing a digital high-pass filter. Concerns are raised about the limitations of FFT with non-integer cycles and the necessity of having sufficient sample points for accurate analysis. Additionally, methods like polynomial fitting and data extension techniques are proposed to help estimate the integral of the function without the DC offset. The conversation emphasizes the importance of understanding the signal characteristics and the implications of different approaches to achieve the desired results.
abdo799
Messages
168
Reaction score
4
I wanted to remove the dc component from a signal but i can't use the average method because i have only a half cycle sampled not a full cycle . Is there any algorithm or method that can remove the dc component using only a half cycle?
(The signal is sin(x)+2*sin (2x) +3*cos (3x)+4*cos (4x) +5 =f (x), of course normally i don't have the function i have points (x,f (x)) .)
 
Engineering news on Phys.org
It depends on how you define the DC component for one half cycle. Subtracting the average works for any signal sample according to my definition of DC offset.
 
anorlunda said:
It depends on how you define the DC component for one half cycle. Subtracting the average works for any signal sample according to my definition of DC offset.
Yes it would work but i can't because i don't have the full cycle so i can't get its average
 
Why do you only have a half-cycle? Is your memory not deep enough for a full cycle? And you have a half cycle of which frequency component? x or 4x? What is the signal to noise ratio (SNR) for your data acquisition?
 
abdo799 said:
Is there any algorithm or method that can remove the dc component using only a half cycle?
Take the Fourier transform, FFT, of the signal. Overwrite the Cosine( zero ) component with zero. Take the IFT. The DC is gone!
Or; write a digital high-pass filter to eliminate the low frequencies.
 
berkeman said:
Why do you only have a half-cycle? Is your memory not deep enough for a full cycle? And you have a half cycle of which frequency component? x or 4x? What is the signal to noise ratio (SNR) for your data acquisition?
Sorry for the late reply, i am asking for a friend so i had to get back to him, he said " he has a half cycle of the function not just the x or the 4x , he can't get a full cycle because the period is very long he doesn't have time to get a full cycle ( it's some kind of mechanical application, vibration or something, didnt really understand because i am electrical major :) )
As for the snr he's trying to figure it out right now as an ideal situation, once he figures it out he will start dealing with the noise from the sensors and the adc etc..
 
abdo799 said:
The signal is sin(x)+2*sin (2x) +3*cos (3x)+4*cos (4x) +5 =f (x),
I meant the frequencies of the sin() and cos() parts of the function. The periods are different when the arguments are x, 2x, 3x, 4x. Presumably he means only a half-cycle of the slowest-varying argument to the functions, which would be just x.

I'll try plotting that with Excel or Wolfram Alpha when I get a chance to see what it looks like...
 
  • Like
Likes K Murty
Baluncore said:
Take the Fourier transform, FFT, of the signal. Overwrite the Cosine( zero ) component with zero. Take the IFT. The DC is gone!
Or; write a digital high-pass filter to eliminate the low frequencies.
Doesnt fft require an integer number of cycles sampled?
As for the filters, he tried on MATLAB to multiply by this transfer function ( (1-z)/(1-0.95z)) he read somewhere online that this T.F blocks dc , then he set the simulation to end after half the period and it didnt work.
 
What he basically wants to do is get the graph of the integral of the function where C=0
But when he used numerical integration methods (because he doesn't have the function he has points) he got the right graph but there is a dc offset , he wants to remove it to get the right graph
 
  • #10
abdo799 said:
Doesnt fft require an integer number of cycles sampled?
Not necessarily. Apply a raised cosine window function before the transform to reduce the sensitivity. If he has exactly one half cycle of the fundamental, there are ways to extend the data by adding samples with value zero, or by duplication, inversion or folding.

If he fits an order n-1 polynomial to n data points, then convert the coefficients to the integral, he will still have to eliminate the DC.

The constant 5 in the generator equation and the constant of integration will be combined. It will be impossible to separate the estimates of the integral of the constant +5 term and the constant of integration. I guess the problem depends on how the “DC offset” is defined. If he can see a DC offset, why can he not remove it?
 
  • #11
Baluncore said:
Not necessarily. Apply a raised cosine window function before the transform to reduce the sensitivity. If he has exactly one half cycle of the fundamental, there are ways to extend the data by adding samples with value zero, or by duplication, inversion or folding.

If he fits an order n-1 polynomial to n data points, then convert the coefficients to the integral, he will still have to eliminate the DC.

The constant 5 in the generator equation and the constant of integration will be combined. It will be impossible to separate the estimates of the integral of the constant +5 term and the constant of integration. I guess the problem depends on how the “DC offset” is defined. If he can see a DC offset, why can he not remove it?
i didnt really understand what you said about the polynomilas, can you explain more please, if you don't mind.
about duplication ... he can't do that because there is no half wave symmetry ( the real function is actually longer than what i wrote , i just tried to give a simplified example) about
Baluncore said:
adding samples with value zero
i don't understand how it will help, can you please explain further?
 
  • #12
abdo799 said:
i didnt really understand what you said about the polynomilas, can you explain more please, if you don't mind.
Do you remember the quick way to differentiate a polynomial?
Say you have a polynomial y = a + bx + cx^2 + dx^3 + …
You know the derivative will be y' = b + 2cx + 3dx^2 + …
Reversing that process, you can generate the integral of the polynomial; y = a + bx + cx^2 + dx^3 + …
as; Integral( y ) = k + ax + (bx/2)^2 + (cx/3)^3 + (dx/4)^4 + … ; where k is the constant of integration.
You just need to be able to convert the n sample points to n-1 polynomial coefficients.

If I remember correctly, the same sort of trick can be done with Fourier coefficients after an FFT.
Swap the Cos() and Sin() coefficients, negate as needed.

abdo799 said:
i don't understand how it will help, can you please explain further?
If you have less than 2^n points you can follow it with zeros to make it up to 2^n points for a FFT.
If you have exactly half a cycle of fundamental, repeating the data, but negative, will complete the fundamental cycle. It may cancel or double the other coefficients.
 
  • Like
Likes abdo799
  • #13
Baluncore said:
If you have exactly half a cycle of fundamental, repeating the data, but negative, will complete the fundamental cycle. It may cancel or double the other coefficients.
So for example if i have a signal with period 6 s and i am taking a sample every 1 s
Lets say
0 1
1 3
2 4
3 2
If i assumed that
4 -3
5 -4
6 -2
The fundemetal component should be the same but other coefficient will be changed?
 
  • #14
That looks OK, except for the confusing entry; 0 1.
 
  • Like
Likes abdo799
  • #15
Baluncore said:
That looks OK, except for the confusing entry; 0 1.
I got confused too when i was typing the reply , i will tell him to try it.
Will parameter estimators ( like maximum likelyhood for example ) work?
 
  • #16
abdo799 said:
I got confused too when i was typing the reply , i will tell him to try it.
When folding data, keep your wits about you.

abdo799 said:
Will parameter estimators ( like maximum likelyhood for example ) work?
I have no idea. Every method leads to the correct result, only the error bars are different. If you know what you are looking for in the data you will find it, but is it really there, or is it just some lucky noise.

Working through an intermediary or translator can lead to misunderstandings. The incomplete example equation given is not what I would expect in the real world. In the situation where the fundamental is smaller than the harmonics, I would expect stored energy, instability or a chaotic surprise.

All we can do here is throw in suggestions of different possible approaches. Education involves understanding possible solutions well enough, to reject them for valid reasons.

If you are using Fourier coefficients then maybe the problem is cyclic. Make the number of samples per cycle a count of 2^n so as to benefit from the FFT. Use many samples for the highest frequency present, not the requisite Nyquist 2, but an absolute minimum of 16. That way, resolution will be sufficient to keep the expected harmonics separate while still using a window function.
 
Last edited:
Back
Top