Mean Amplitude of the signal
Show older comments
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...
Accepted Answer
More Answers (2)
Arun Aniyan
on 23 Mar 2012
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
on 23 Mar 2012
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]));
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!