查看原文
其他

代码分享|静息态频域各指标的计算,建议收藏

周翊 茗创科技 2021-07-10

请点击上面“茗创科技”四个字,选择关注我们

大家好,我是茗创科技的工程师周翊,静息态数据在做频域分析的时候常用的指标有四个

实现代码如下:


% 代码由茗创科技工程师 周翊编写 并无偿分享使用 转载注明来源% 更多需要可加微信了解% 茗创科技专注于脑影像数据处理,涵盖(fMRI,结构像,DTI,ASL,EEG/ERP,FNIRS,眼动)等,也欢迎% 了解茗创科技的课程及数据处理服务,可添加微信号 17373158786 进行咨询。% Written By Yizhou% Using the code without proper understanding the code and relevant background% of EEG may lead to confusion, incorrect data analyses,or misinterpretations% of results.% The author assumes NO responsibility for inappropriate or incorrect use% of this code.% WX:17373158786


%频域分析设置% Fs采样率Fs = 512;%分段长度 采样率*分段长度L = 1024;% % 把分段长度变成值最拼接的2的n次冥值,目的是提高运算速度NFFT = 2^nextpow2(L);%创建频域列表f = Fs/2 * linspace(0,1,NFFT/2+1);


% 路径设置为预处理的文件夹anal_path = 'E:\Docu\Work\1_Projects\Rest_8\anal_V2\resting';cd(anal_path);files = dir([anal_path,filesep,'*.set']);
% 新建一个文件夹用于存在静息态指标文件if ~exist([anal_path,filesep,'fft_result'],'dir') mkdir([anal_path,filesep,'fft_result']);endfre_path = [anal_path,filesep,'fft_result'];%%% 频域结果储存路径cd(fre_path);

for sub_No = 1:length(files) setname = files(sub_No).name; EEG = pop_loadset([anal_path, filesep, setname]); %对于所有通道 for ii=1:size(EEG.data,1) %对于所有分段 for jj=1:size(EEG.data,3) %提取第ii个通道 第jj个分段 所有时间点数据 y = squeeze(EEG.data(ii,:,jj)); %做FFT变换 求真实幅值----------------------------------指标1:幅值 这个指标使用较少 temp = fft(y,NFFT)/ L; fuzhi(jj,:) = 2*abs(temp(1:NFFT/2+1)); % 做FFT变换,求功率(uV平方)%-------------------------指标2:功率 使用较多 temp = fft(y,NFFT)/L; power(jj,:)=(2*abs(temp(1:NFFT/2+1))).^2; % fft results, in power % 做FFT变换,求功率谱密度(PSD)(单位 uV平方/ Hz)%----指标3:功率谱密度 使用较多 temp = 2*abs(fft(y,NFFT)).^2/L/Fs; PSD(jj,:) = temp(1:NFFT/2 + 1); % 做FFT变换,求功率谱密度(PSD)(单位 dB )%----------指标4: % 对指标3做log变换,目的是压缩低频,延展高频最推荐的指标 temp = 2*abs(fft(y,NFFT)).^2/L/Fs; DB_PSD(jj,:) = 10*log10(temp(1:NFFT/2+1)); end %数据汇总:被试*通道*频率 mean_fuzhi(sub_No ,ii,:) = squeeze(mean(fuzhi,1)); clear fuzhi; mean_power(sub_No ,ii,:) = squeeze(mean(power,1)); clear power; mean_PSD(sub_No ,ii,:) = squeeze(mean(PSD,1)); clear PSD; mean_DB_PSD(sub_No ,ii,:) = squeeze(mean(DB_PSD,1)); clear DB_PSD; end % 保存各个指标 end
% 保存结果文件到结果文件的路径,四个指标分别保存save ('fuzhi.mat', 'mean_fuzhi');save ('power.mat', 'mean_power');save ('PSD.mat', 'mean_PSD');save ('DB_PSD.mat', 'mean_DB_PSD');% % clear mean*;


% Copyright (c) 2020-2021 MCKJ. All rights reserved.

微信扫码或者长按选择识别关注茗创

非常感谢转发支持与推荐


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存