Tuesday, February 16, 2016

Matlab code to import the data in the file "P-10_3.xls" and plot the EEG signal






BIOM 480A: Biomedical Signal and ImageProcessing
Colorado State University
Student: Minh Anh Nguyen




Problem 10.3
Import the data in the file "P-10_3.xls" and plot the EEG. The sample rate of the data was 173.61 Hz.




a. Determine the normal EEG frequency spectrum
 





b. Plot the power spectrum of the signal





d. Calculated the fractal dimension, signal complexity, signal mobility of this signal and compare it with the same value in the problem.4.






signal complexity for original data = 1.0286
signal complexity for before grand mal seizures = 1.0936
signal complexity for during grand mal seizures = 0.9967
signal complexity for after grand mal seizures = 1.2358

signal mobility for original data = 1.1102
signal mobility for before grand mal seizures = 0.6585
signal mobility for during grand mal seizures = 1.0823
signal mobility for after grand mal seizures = 0.8971

fractal dimension for original data = 1.875
fractal dimension for before grand mal seizures = 1.985
fractal dimension for during grand mal seizures = 1.9952
fractal dimension for after grand mal seizures = 1.989

The simulation results above showed: 1. the complexity dropped lower than the mobility for the during grand mal seizures simulation. 2. The mobility lower than complexity for before and after grand mal seizures. These results confirmed the definition, which is given in section 6.2.1 of the Biomedical Signal and Image processing textbook, is corrected. The Fractal dimension, measure of self-similarity of an original data, is 1.8. the plots above showed the slope of the plot ln(l(k)  versus ln(1/k). 


For the problem 10.4:



signal complexity = 1.3403
signal mobility = 0.5205
fractal dimension = 1.9559
When we compared the simulation results from the problem 10.4 with problem 10.3, we saw that the complexity value of the problem 10.4 is higher than the complexity value of the original data of the problem 10.3. According to the definition in the section 6.2 and 6.2.1 of the Biomedical Signal and Image processing textbook, “the normal and healthy biomedical systems are complex. Once a disease occurs, the complexity of the system drops” the data provided for the problem 10.4 is collected form a healthy patient. We did know that the data for problem 10.3 is for grand mal seizures; so we expected to see the complexity value for this data lower than the complexity value for problem 10.4. 

Problem 6.5
Import and plot the EEG signal captured under a fixed condition.




a.       Calculate the mean of the stochastic process
The mean is 0.675834148647028
b.      Calculate the variance of stochastic process
The variance is 4.739270596953347e+02
Assume Gaussian distribution; find PDF of the stochastic process.


Use the Matlab command xcorr, calculate an estimate of the autocorrelation function


e       Using the correlation function estimate in part “c”. Estimate the power spectrum of the process.
-          The correlation function estimate in part “c” = 1. We see that the autocorrelation function is the auto-covariance, P(x=0) = 1.




    Do you see any visible frequency in the power spectrum? Explain.
Yes, from the power spectrum plot above, all the spurious frequency peaks caused by noise did remove from the plot.  The spectral component at 46, 131, 367, and 411 Hz that were buried in noise is now visible. Averaging did remove variance from the spectrum; as a result, this yields more accurate power measurements.
The plot of the power spectrum shows two expected peaks at DC, 101, and 146 Hz. It also shows several more spurious peaks that must be caused by noise in the signal. 


Matlab code:
close all;
clear all;
clc;
%% problem 10.3

%%import the data in the file "P-10_3.xls"  and plot the signal
problem10_3 =xlsread('I:\BIOM480A3\HW4\p_10_3.xls');
% =xlsread('\\tsclient\E\BIOM480A3\HW4\p_10_3.xls');
y1 = problem10_3(:);
fs = 173.61;% sampling rate or frequency (Hz)
N = length(y1);% find the length of the data per second
T = 1/fs % period between each sample
ls = size(y1); %% size
fs2 = 1/ N;% find the sampling rate or frequency
t = (0 : N-1) /fs;

t1 = (0 : N-1) *T;%t = (0:1:length(y1)-1)/fs; % sampling period
Nyquist = fs/2;
figure;
 plot(t,y1,'b');    
title ('plot of the orignal EEG signal of a grand mal assault')
xlabel ('time (sec)')
ylabel ('Amplitute (uv)')
grid on;
figure;
y1bef = y1(5:1800);
N1 = length(y1bef);
tbefore = (0 : N1-1) /fs;
subplot (3,1,1);
   plot(tbefore,y1bef,'b');    
title ('plot of the before Grand Mal seizures ')
xlabel ('time (sec)')
ylabel ('Amplitute (uv)')
grid on;
y1during = y1(8000:12000 );
N2 = length(y1during);
tduring = (0 : N2-1) /fs;
%figure;
subplot (3,1,2);
   plot(tduring,y1during,'b');    
title ('plot of the during Grand Mal seizures ')
xlabel ('time (sec)')
ylabel ('Amplitute (uv)')
grid on;

y1after = y1(15000:17500 );
N3 = length(y1after);
tafter = (0 : N3-1) /fs;
%figure;
subplot (3,1,3);
   plot(tafter, y1after,'b');    
title ('plot of the after Grand Mal seizures ')
xlabel ('time (sec)')
ylabel ('Amplitute (uv)')
grid on;

  %% Fourier Transform:
   X = fftshift(fft(y1));
   X1= fftshift(fft(y1bef));
   X2= fftshift(fft(y1during));
   X3= fftshift(fft(y1after));
   %% Frequency specifications:
   dF = fs/N;                      % hertz
   f = -fs/2:dF:fs/2-dF;           % hertz
    %% Frequency specifications:
   dF1 = fs/N1;                      % hertz
   f1 = -fs/2:dF1:fs/2-dF1;           % hertz
    %% Frequency specifications:
   dF2 = fs/N2;                      % hertz
   f2 = -fs/2:dF2:fs/2-dF2;           % hertz
    %% Frequency specifications:
   dF3 = fs/N3;                      % hertz
   f3 = -fs/2:dF3:fs/2-dF3;           % hertz
   %% Plot the spectrum:
   figure;
   subplot (2,2,1);
   plot(f,abs(X)/N);
   xlabel('Frequency (in hertz)');
   title('Magnitude Response of original');
    %% Plot the spectrum: before
   %figure;
   subplot (2,2,2);
   plot(f1,abs(X1)/N1);
   xlabel('Frequency (in hertz)');
   title('Magnitude Response for before Grand Mal seizures');
     %% Plot the spectrum: during
   %figure;
      subplot (2,2,3);
   plot(f2,abs(X2)/N2);
   xlabel('Frequency (in hertz)');
   title('Magnitude Response for during Grand Mal seizures');
     %% Plot the spectrum: after
   %figure;
      subplot (2,2,4);
   plot(f3,abs(X3)/N3);
   xlabel('Frequency (in hertz)');
   title('Magnitude Response for after Grand Mal seizures');
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xmag = abs(fft(y1));
binval = 0:N-1;
faxnom = (binval*(fs/N))/Nyquist;
N_2 = ceil(N/2);
figure;

plot(faxnom(1:N_2), xmag(1:N_2))
xlabel({'Frequency (Normalised to Nyquist Frequency. ' ...
    '1=Nyquist frequency)'})
ylabel('Magnitude');
title('Single-sided Magnitude spectrum for orignal data (Normalised to Nyquist)');


xmagbef = abs(fft(y1bef));
binvalbef = 0:N1-1;
faxnombef = (binvalbef*(fs/N1))/Nyquist;
N_2befo = ceil(N1/2);
figure;
plot(faxnombef(1:N_2befo), xmag(1:N_2befo))
xlabel({'Frequency (Normalised to Nyquist Frequency. ' ...
    '1=Nyquist frequency)'})
ylabel('Magnitude');
title('Single-sided Magnitude spectrum for before Grand Mal seizures(Normalised to Nyquist)');

xmagdr = abs(fft(y1during));
binvaldr = 0:N2-1;
faxnomdr = (binvaldr*(fs/N2))/Nyquist;
N_2dr = ceil(N2/2);
figure;
plot(faxnomdr(1:N_2dr), xmag(1:N_2dr))
xlabel({'Frequency (Normalised to Nyquist Frequency. ' ...
    '1=Nyquist frequency)'})
ylabel('Magnitude');
title('Single-sided Magnitude spectrum for during Grand Mal seizures (Normalised to Nyquist)');

xmagaf1 = abs(fft(y1after));
binvalaf1 = 0:N3-1;
faxnomaf1 = (binvalaf1*(fs/N3))/Nyquist;
N_2af1 = ceil(N3/2);
figure;
plot(faxnomaf1(1:N_2af1), xmag(1:N_2af1))
xlabel({'Frequency (Normalised to Nyquist Frequency. ' ...
    '1=Nyquist frequency)'})
ylabel('Magnitude');
title('Single-sided Magnitude spectrum for after Grand Mal seizures (Normalised to Nyquist)');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Single-sided power spectrum in decibels and Hertz part C
NFFT = 2^nextpow2(N);
Y =fft(y1,NFFT)/N;
ft = fs/2*linspace (0, 1,NFFT/2+1);
figure;
%Power Spectral Density Estimates Using FFT
%plot (ft,20*log10(Y(1:NFFT/2+1)));
plot (ft,2*abs(Y(1:NFFT/2+1)));
xlabel('Frequency (Hz)')
ylabel('Power (dB)');
title('Single-sided Power spectrum (Hertz)for orignal data');
axis tight

NFFT1 = 2^nextpow2(N1);
Y1 =fft(y1bef,NFFT1)/N1;
ft1 = fs/2*linspace (0, 1,NFFT1/2+1);
figure;
%Power Spectral Density Estimates Using FFT
%plot (ft,20*log10(Y(1:NFFT/2+1)));
plot (ft1,2*abs(Y1(1:NFFT1/2+1)));
xlabel('Frequency (Hz)')
ylabel('Power (dB)');
title('Single-sided Power spectrum (Hertz)for before Grand Mal seizures');
axis tight


NFFT2 = 2^nextpow2(N2);
Y2 =fft(y1during,NFFT2)/N2;
ft2 = fs/2*linspace (0, 1,NFFT2/2+1);
figure;
%Power Spectral Density Estimates Using FFT
%plot (ft,20*log10(Y(1:NFFT/2+1)));
plot (ft2,2*abs(Y2(1:NFFT2/2+1)));
xlabel('Frequency (Hz)')
ylabel('Power (dB)');
title('Single-sided Power spectrum (Hertz)for during Grand Mal seizures');
axis tight

NFFT3 = 2^nextpow2(N3);
Y3 =fft(y1after,NFFT3)/N3;
ft3 = fs/2*linspace (0, 1,NFFT3/2+1);
figure;
%Power Spectral Density Estimates Using FFT
%plot (ft,20*log10(Y(1:NFFT/2+1)));
plot (ft3,2*abs(Y3(1:NFFT3/2+1)));
xlabel('Frequency (Hz)')
ylabel('Power (dB)');
title('Single-sided Power spectrum (Hertz)for after Grand Mal seizures');
axis tight

X_mags= abs(fft(y1));
bin_vals = [0 : N-1];
fax_Hz = bin_vals*fs/N;
N_2 = ceil(N/2);
%plot(fax_Hz(1:N_2), 20*log10(X_mags(1:N_2)))
figure;
plot(fax_Hz(1:2500), 20*log10(X_mags(1:2500)))
xlabel('Frequency (Hz)')
ylabel('Power (dB)');
title('Single-sided Power spectrum (Hertz)');
axis tight

%Single-sided power spectrum in dB and frequency on a log scale
X_mag = abs(fft(y1));
figure;
%subplot(6,1,1);
semilogx(fax_Hz(1:N_2), 20*log10(X_mags(1:N_2)))
xlabel('Frequency (Hz)');
ylabel('Power (dB)');
title({'Single-sided Power spectrum' ...
    ' (Frequency in shown on a log scale)'});
axis tight

%% before
%Single-sided power spectrum in dB and frequency on a log scale
figure;
X_magsbef= abs(fft(y1bef));
bin_vals1 = [0 : N1-1];
fax_Hz1 = bin_vals1*fs/N1;
N_2bef = ceil(N1/2);
semilogx(fax_Hz1(1:N_2bef), 20*log10(X_magsbef(1:N_2bef)));
xlabel('Frequency (Hz)');
ylabel('Power (dB)');
title({'Single-sided Power spectrum for before' ...
    ' (Frequency in shown on a log scale)'});
axis tight
%% during
%Single-sided power spectrum in dB and frequency on a log scale
figure;
X_magsduring= abs(fft(y1during));
bin_vals2= [0 : N2-1];
fax_Hz2 = bin_vals2*fs/N2;
N_2during = ceil(N2/2);
semilogx(fax_Hz2(1:N_2during), 20*log10(X_magsduring(1:N_2during)));
xlabel('Frequency (Hz)');
ylabel('Power (dB)');
title({'Single-sided Power spectrum for during' ...
    ' (Frequency in shown on a log scale)'});
axis tight
figure;
X_magsafter= abs(fft(y1after));
bin_vals3= [0 : N3-1];
fax_Hz3 = bin_vals3*fs/N3;
N_2after = ceil(N3/2);
semilogx(fax_Hz3(1:N_2after), 20*log10(X_magsafter(1:N_2after)));
xlabel('Frequency (Hz)');
ylabel('Power (dB)');
title({'Single-sided Power spectrum for after' ...
    ' (Frequency in shown on a log scale)'});
axis tight

N = length(y1);
xdft = fft(y1);
xdft = xdft(1:N/2+1);
psdx = (1/(fs*N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:fs/length(y1):fs/2;
plot(freq,10*log10(psdx))
grid on
title(' Power spectrum FFT')
xlabel('Frequency (Hz)')
ylabel('Power/Frequency (dB/Hz)')

%The quadratic mean of the second column is:
%%%%
d = diff (y1);
g = diff (d);
so = rms(y1);
s1 = rms(d);
s2 = rms (g);
%%%%%%%%%%%%%%%%%
signal_complexity = sqrt((s2^2/s1^2) - (s1^2/so^2));
signal_mobility = s1/so;

%The quadratic mean of the second column is:
%%%%
dbefore = diff (y1bef);
gbefore = diff (dbefore);
sobefore = rms(y1bef);
s1before = rms(dbefore);
s2before = rms (gbefore);
%%%%%%%%%%%%%%%%%
signal_complexity_before = sqrt((s2before^2/s1before^2) - (s1before^2/sobefore^2));
signal_mobility_before = s1before/sobefore;
%The quadratic mean of the second column is:
%%%%
dduring = diff (y1during);
gduring = diff (dduring);
soduring = rms(y1during);
s1during = rms(dduring);
s2during = rms (gduring);
%%%%%%%%%%%%%%%%%
signal_complexity_during = sqrt((s2during^2/s1during^2) - (s1during^2/soduring^2));
signal_mobility_during = s1during/soduring;


%The quadratic mean of the second column is:
%%%%
dafter = diff (y1after);
gafter = diff (dafter);
soafter = rms(y1after);
s1after = rms(dafter);
s2after = rms (gafter);
%%%%%%%%%%%%%%%%%
signal_complexity_after = sqrt((s2after^2/s1after^2) - (s1after^2/soafter^2));
signal_mobility_after = s1after/soafter;

%% fractal dimension
%% fractal dimension
%% Applied the COMPLETE HIGUCHI FRACTAL DIMENSION ALGORITHM  from this website
%http://www.mathworks.com/matlabcentral/fileexchange/30119-complete-higuchi-fractal-dimension-algorithm/content/hfd.m
% but I modify the kmax, k and m value. I also modified code to load a
% corrected data.
kmax=9000;
y1new=y1(:)';
Lmk=zeros(kmax,kmax);

for k=1:kmax,
    for m=1:k,
        Lmki=0;
        for i=1:fix((N-m)/k),
            Lmki=Lmki+abs(y1new(m+i*k)-y1new(m+(i-1)*k));
        end;
        Ng=(N-1)/(fix((N-m)/k)*k);
        Lmk(m,k)=(Lmki*Ng)/k;%Here is the problem in your code, Mr. Tikkuhirvi & Mr. Aino
    end;
end;

Lk=zeros(1,kmax);
for k=1:kmax,
    Lk(1,k)=sum(Lmk(1:k,k))/k;
end;

lnLk=log(Lk);
lnk=log(1./[1:kmax]);
b=polyfit(lnk,lnLk,1);
xhfd=b(1);
varargout={xhfd,lnk,lnLk,Lk,Lmk};

figure;
subplot (4,1,2);
 plot (lnk, lnLk);
title ('plot of the ln(l(k)) versus ln (l/k) of EEG signal of a grand mal assault ');
xlabel ('ln (l/k)');
ylabel ('ln(l(k))');
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% before

kmaxbef=500;
y1newbef=y1bef(:)';
Lmkbef=zeros(kmaxbef,kmaxbef);

for kbef=1:kmaxbef,
    for mbef=1:kbef,
        Lmkibef=0;
        for i=1:fix((N1-mbef)/kbef),
            Lmkibef=Lmkibef+abs(y1newbef(mbef+i*kbef)-y1newbef(mbef+(i-1)*kbef));
        end;
        Ngbef=(N1-1)/(fix((N1-mbef)/kbef)*kbef);
        Lmkbef(mbef,kbef)=(Lmkibef*Ngbef)/kbef;%Here is the problem in your code, Mr. Tikkuhirvi & Mr. Aino
    end;
end;

Lkbef=zeros(1,kmaxbef);
for kbef=1:kmaxbef,
    Lkbef(1,kbef)=sum(Lmkbef(1:kbef,kbef))/kbef;
end;

lnLkbef=log(Lkbef);
lnkbef=log(1./[1:kmaxbef]);
b1=polyfit(lnkbef,lnLkbef,1);
xhfdbefore=b1(1);
varargoutbef={xhfdbefore,lnkbef,lnLkbef,Lkbef,Lmkbef};

%figure;
subplot (4,1,2);
 plot (lnkbef, lnLkbef);
title ('plot of the ln(l(k)) versus ln (l/k) of EEG signal before grand mal seizures ');
xlabel ('ln (l/k)');
ylabel ('ln(l(k))');
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% during

kmaxduring=500;
y1newduring=y1during(:)';
Lmkduring=zeros(kmaxduring,kmaxduring);

for kduring=1:kmaxduring,
    for mduring=1:kduring,
        Lmkiduring=0;
        for i=1:fix((N2-mduring)/kduring),
            Lmkiduring=Lmkiduring+abs(y1newduring(mduring+i*kduring)-y1newduring(mduring+(i-1)*kduring));
        end;
        Ngduring=(N2-1)/(fix((N2-mduring)/kduring)*kduring);
        Lmkduring(mduring,kduring)=(Lmkiduring*Ngduring)/kduring;%Here is the problem in your code, Mr. Tikkuhirvi & Mr. Aino
    end;
end;

Lkduring=zeros(1,kmaxduring);
for kduring=1:kmaxduring,
    Lkduring(1,kduring)=sum(Lmkduring(1:kduring,kduring))/kduring;
end;

lnLkduring=log(Lkduring);
lnkduring=log(1./[1:kmaxduring]);
b2=polyfit(lnkduring,lnLkduring,1);
xhfdduring=b2(1);
varargoutduring={xhfdduring,lnkduring,lnLkduring,Lkduring,Lmkduring};

%figure;
subplot (4,1,3);
 plot (lnkduring, lnLkduring);
title ('plot of the ln(l(k)) versus ln (l/k) of EEG signal during grand mal seizures ')
xlabel ('ln (l/k)');
ylabel ('ln(l(k))');
grid on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% after  y1after
kmaxaf=500;
y1af=y1after(:)';
Lmkaf=zeros(kmaxaf,kmaxaf);

for kaf=1:kmaxaf,
    for maf=1:kaf,
        Lmkiaf=0;
        for i=1:fix((N3-maf)/kaf),
            Lmkiaf=Lmkiaf+abs(y1af(maf+i*kaf)-y1af(maf+(i-1)*kaf));
        end;
        Ngaf=(N3-1)/(fix((N3-maf)/kaf)*kaf);
        Lmkaf(maf,kaf)=(Lmkiaf*Ngaf)/kaf;%Here is the problem in your code, Mr. Tikkuhirvi & Mr. Aino
    end;
end;

Lkaf=zeros(1,kmaxaf);
for kaf=1:kmaxaf,
    Lkaf(1,kaf)=sum(Lmkaf(1:kaf,kaf))/kaf;
end;

lnLkaf=log(Lkaf);
lnkaf=log(1./[1:kmaxaf]);
b3=polyfit(lnkaf,lnLkaf,1);
xhfdaf=b3(1);
varargoutaf={xhfdaf,lnkaf,lnLkaf,Lkaf,Lmkaf};

%figure;
subplot (4,1,4);
 plot (lnkaf, lnLkaf);
title ('plot of the ln(l(k)) versus ln (l/k) of EEG signal after grand mal seizures ');
xlabel ('ln (l/k)');
ylabel ('ln(l(k))');
grid on;

close all;
clear all;
clc;
%% problem 6.5
%%import the data in the file "P-6_5.xls" and plot the signal
%load('p_6_5.mat')
%problem6_3 =xlsread('\\tsclient\E\BIOM480A3\HW4\test.xls');
problem6_3 =xlsread('I:\BIOM480A3\HW4\test.xls');
y1 = problem6_3(:);
%fs = 173.61;% sampling rate or frequency (Hz)
N = length(y1);% find the length of the data per second
%T = 1/fs % period between each sample
ls = size(y1); %% size
fs2 = 1/ N;% find the sampling rate or frequency
t = (0 : N-1) /fs2;
t1 = (0 : N-1)'/N;%t = (0:1:length(y1)-1)/fs; % define time
Nyquist = fs2/2;
figure; 
   plot(y1,'b');
title ('plot of the EEG signal caputure under fixed condition')
xlabel ('time (sec)');
ylabel ('Amplitute (v)');grid on;
%compute the mean of x
means = mean(y1);
variance = var(y1);
xbar = y1(1);
for i=2:N
xbar = xbar + y1(i);
end
xbar = xbar/N;

%compute the variance of x
var = std(y1)^2;
conv= cov(y1);
corr = corrcoef(y1);

%% part C
%f1 = normpdf(y1);
f1 = normpdf(y1);
figure;
plot (f1);
title ('plot of the PDF of the stochastic process')
xlabel ('time (sec)')
ylabel ('Amplitute (v)')
grid on;

figure;
subplot(2,1,1);
hist(y1); title('Histogram of Raw Data');
[f,xi] = ksdensity(y1); %pdf estimate
subplot(2,1,2);
plot(xi,f); title('plot of the PDF of the stochastic process');
xlabel ('random process numbers');
ylabel ('Gaussian distribution');
figure;

subplot(2,2,1);
hist (f1);
title({'plot of the PDF of the PDF stochastic process..'
    'without means and variance'});
xlabel ('random process numbers');
ylabel ('Gaussian distribution');

%figure;
subplot(2,2,2);
f12= normpdf(y1, means, variance);
hist(f12);
title({'plot of the PDF of the PDF stochastic process...'
    'with means and variance'});
xlabel ('random process numbers');
ylabel ('Gaussian distribution');

%% part d
xcor = xcorr (y1);
figure;
plot(xcor);
title ('plot of the autocorrelation of the EEG')
xlabel ('time (sec)')
ylabel ('Amplitute (uv)')

%part e
Corrlation_partC = corrcoef(f);
Corrlation_partC1 = corrcoef(xi,f);
Corrlation_partC2 = corrcoef(y1);

xdft = fft(y1);
xdft = xdft(1:N/2+1);
psdx = (1/(fs2*N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:fs2/length(y1):fs2/2;
figure;
plot(freq,10*log10(psdx))
grid on
title('the power spectrum of the process using 10*log10(fft(signal)) ')
xlabel('Frequency (Hz)')
ylabel('Power/Frequency (dB/Hz)')
psdx1 = (1/(length(y1))) * abs(xdft).^2;
figure;
plot (psdx1)
title('the power spectrum of the process using FFT')
xlabel('Frequency (Hz)')
ylabel('Power/Frequency (dB/Hz)')





1 comment: