Median Frequency
Show older comments
I am trying to use Matlab to find the median frequency of an EMG signal. The code I am using is below, and s is my signal. X is the frequency value I am trying to find so Z=P. Is there any solve function I can use to quickly find this answer or is guess and check my best bet? Or does anyone know an easieer method to find the median freq.?
>> Fs = 10000;
>> nfft = 2*nextpow2 (length(s));
>> Pxx = abs(fft(s,nfft)).^2/length(s)/Fs;
>> Hpsd = dspdata.psd(Pxx(1:length(Pxx)/2),'Fs',Fs);
>> plot(Hpsd);
>> P = avgpower(Hpsd)/2
>> Z = avgpower(Hpsd,[0,X])
Thanks
Accepted Answer
More Answers (2)
Wayne King
on 23 Aug 2011
0 votes
I suspect your problem is that your signal has a nonzero mean possibly as a result of some nonstationarity or simply due to a DC shift. This would cause the OverHalfIdx variable in Honglei's code to be 1 and UnderHalfIdx to be empty.
I suggest you detrend your signal first. If you signal exhibits simply a DC shift, this can be accomplished with:
s = detrend(s,0);
If the nonzero mean is due to nonstationarity, it is trickier to handle.
Honglei's suggestion is a great solution after that.
mohamed ashour taha
on 21 Dec 2015
0 votes
how can i use it in for loop % Hpsd = psd(h,S2,'Fs',Fs,'NFFT',NFFT);
Categories
Find more on Spectral Measurements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!