Mean Amplitude of the signal
조회 수: 16 (최근 30일)
이전 댓글 표시
Hi, My problem is to calculate mean amplitude of the signal and plot it on the graph with signal course. Below you can see my source code:
y % signal vector, where [3083 1]= size(y)
Fs=100;
L=length(y);
NFFT = 2^nextpow2(L);
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
n1=1/100; %1
m1=L/100; %end
[a b]=size(y);
nov=(m1-n1)/(a-1);
x=n1:nov:m1;
figure
subplot(2,1,1)
plot(f,2*abs(Y(1:NFFT/2+1)),color) % amplitude spectrum
subplot(2,1,2)
plot(x,y,'b') % course of the signal
Could you tell me how can I calculated mean amplitude based on this? Or maybe there exists another way to find it? When I used mean(abs(Y(1:NFFT/2+1))) and ploted it on the second subplot it was far away from signal...
댓글 수: 0
채택된 답변
Wayne King
2012년 3월 23일
Hi Karolina, No, it's proportional to the amplitude squared of the Fourier coefficients. You can get amplitude estimates like this:
t = 0:0.01:5-0.01;
x = cos(2*pi*4*t)+1/2*cos(2*pi*8*t)+randn(size(t));
xdft = fft(x);
xdft = (2/length(x))*xdft(1:length(x)/2+1);
Now, you have to be able to figure out that the 4-Hz component lives in DFT bin (21) and the 8-Hz component lives in DFT bin (41)
abs(xdft(21))
abs(xdft(41))
Give you the amplitude estimates for those frequencies.
abs(xdft(16:51))
Gives you the amplitude estimates for 3-10 Hz.
Note that the spacing between DFT bins ist Fs/N where Fs is the sampling frequency and N is the length of the signal.
댓글 수: 2
Aqeel Syed Shamsi
2018년 9월 29일
Hi Wayne, what if I want amplitude estimates for 7-13 Hz? Please reply, I shall be very thankful to you!
Tor Aarskog
2020년 6월 18일
Hi, By doing this i would get a vecor of values. Are they mean amplitudes, of the frequency range, in the time step? What would these values correspond to ?
추가 답변 (2개)
Arun Aniyan
2012년 3월 23일
Hi,
I am not sure why you should do fourier transform to get the mean amplitude of your signal . For the mean amplitude of the signal for your case you can simply use
mean_amplitude = mean(y); % Find mean amplitude
d=ones(1,length(y)).*mean_amplitude; % A dummy vector having values of the mean
plot(x,y); % Plot your signal
hold all;
plot(d);
This will give a plot with the signal , with a straight line over plotted along the signal. Or do you mean , the mean amplitude of the spectrum ?
Cheers
- Arun
Wayne King
2012년 3월 23일
Hi Karolina, You can find the average power of the signal in the [3,10] Hz band. If you have the Signal Processing Toolbox.
Fs = 100;
t = 0:0.01:1-0.01;
x = cos(2*pi*4*t)+1/2*sin(2*pi*8*t)+randn(size(t));
psdest = psd(spectrum.periodogram,x,'Fs',100,'NFFT',length(x));
pwr = avgpower(psdest,[3,10]);
You can also easily obtain what percentage of the power is contained in that interval
pwrratio = 100*(pwr/avgpower(psdest,[0,50]));
참고 항목
카테고리
Help Center 및 File Exchange에서 Spectral Measurements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!