Plot a multichannel signal to identify the frequency value
2 次查看(过去 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 中查找有关 Fourier Analysis and Filtering 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!