Plot a multichannel signal to identify the frequency value
조회 수: 3 (최근 30일)
이전 댓글 표시
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??
댓글 수: 0
채택된 답변
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
Jesus Sanchez
2018년 7월 23일
편집: Jesus Sanchez
2018년 7월 23일
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개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Annotations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!