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!