Plot a multichannel signal to identify the frequency value

I have a multi-channel EEG data of size 64x1000, where 64 is the number of channels and 1500 time points. I already know that this signal is of 8Hz. I want to plot this signal to show that there is a peak 8Hz indicating the signal frequency.
How can I do it??

 채택된 답변

Jesus Sanchez
Jesus Sanchez 2018년 7월 20일
편집: Jesus Sanchez 2018년 7월 20일
I would do a fast fourier transform for each channel (fft in matlab), so you have the frequential componentes of each channel. Then just use a function such as mesh, surf or pcolor. As these functions represent 3D surfaces, I would define X as channel, Y as frequency and Z as the value given by the FFT.
So in general lines the code will be something like this:
nFFT = 2048; % I asked for 2048 frequency points because why not.
nChannels = 64;
data_freq =fft( multi-channel-EEG-data.',nFFT);
% FFT is applied to columns, that is why it is neccesary to transpose them.
x = 1:nChannels;
y = 1:nFFT;
[X,Y]=meshgrid(x,y);
figure
mesh(X,Y,data_freq);
shading interp;
I did not try the code, so there are probably several mistakes, but if you follow this lines, it should work :). You might need to apply another .' to data_freq to represent it. Good luck!

댓글 수: 2

This doesn't work. I don't have a peak at 8Hz.
Can you upload your data? If there is a peak appearing somewhere different from 8 Hz, it could be that the plot is shifted. Moreover, maybe 2048 points for the FFT is too little. Try to do it directly with
fft( multi-channel-EEG-data.');
and see if that works.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

질문:

2018년 7월 20일

편집:

2018년 7월 23일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by