1、对脑电数据进行db4四层分解,因为脑电频率是在0-64HZ,分层后如图所示,

细节分量[d1 d2 d3 d4]

近似分量[a4]

重建细节分量和近似分量,然后计算对应频段得相对功率谱,重建出来得四个频段(αβθδ)都有14个通道,所以要计算4频段14通道共56个相对功率

2、代码

function wavelet(signal)
A4Array = zeros(14,5000);
D4Array = zeros(14,5000);
D3Array = zeros(14,5000);
D2Array = zeros(14,5000);
for i=1:14
[C,L] = wavedec(signal(i,1:5000),4,'db4');%函数返回 3 层分解的各组分系数C(连接在一个向量里) ,向量 L 里返回的是各组分的长度。
% [cD1,cD2,cD3,cD4] = detcoef(C,L,[1,2,3,4]);%抽取1234层细节系数
% cA4 = appcoef(C,L,'d4',4);%抽取近似系数
A4 = wrcoef('a',C,L,'db4',4);%重建4层近似,deta波
A4Array(i,:) = A4;
D4 = wrcoef('d',C,L,'db4',4);%重建4层细节,sita波
D4Array(i,:) = D4;
D3 = wrcoef('d',C,L,'db4',3);%重建3层细节,alpha波
D3Array(i,:) = D3;
D2 = wrcoef('d',C,L,'db4',2);%重建2层细节,beta波
D2Array(i,:) = D2;
end
detaspectral(signal,A4Array);
thetaspectral(signal,D4Array);
alphaspectral(signal,D3Array);
betaspectral(signal,D2Array);
end

  

detaspectral thetaspectral alphaspectral betaspectra的代码都是一样的
function alphaspectral(signal,dtest8theta)
Fs=128;
N=1024;Nfft=256;n=0:N-1;t=n/Fs;
window=hanning(256);
noverlap=128;
dflag='none';
for i=1:14
x=signal(i,1:5000);
powd(i,:)=psd(x,Nfft,Fs,window,noverlap,dflag);%计算未分频段,总数据的功率谱
x1=dtest8theta(i,:);%某一频段的脑电数据
powd1(i,:)=psd(x1,Nfft,Fs,window,noverlap,dflag);%计算该频段的功率谱
end
xdpowthetad = zeros(14,1);
xdpowthetad=mean(abs(powd1),2)./mean(abs(powd),2);%计算相对功率,用分频段功率谱比上不分频段的。
%save('G:\研三\音乐反馈数据\新算相对功率\xdpowthetad.mat','xdpowthetad');
save('C:\Users\25626\Desktop\滤波后数据\14\相对功率谱\5 3\alphaspectra.mat','xdpowthetad');
end

  

function detaspectral(signal,dtest8theta)
Fs=128;
N=1024;Nfft=256;n=0:N-1;t=n/Fs;
window=hanning(256);
noverlap=128;
dflag='none';
for i=1:14
x=signal(i,1:5000);
powd(i,:)=psd(x,Nfft,Fs,window,noverlap,dflag);%计算未分频段,总数据的功率谱
x1=dtest8theta(i,:);%某一频段的脑电数据
powd1(i,:)=psd(x1,Nfft,Fs,window,noverlap,dflag);%计算该频段的功率谱
end
xdpowthetad = zeros(14,1);
xdpowthetad=mean(abs(powd1),2)./mean(abs(powd),2);%计算相对功率,用分频段功率谱比上不分频段的。
%save('G:\研三\音乐反馈数据\新算相对功率\xdpowthetad.mat','xdpowthetad');
save('C:\Users\25626\Desktop\滤波后数据\14\相对功率谱\5 3\detaspectral.mat','xdpowthetad');
end

  

function betaspectral(signal,dtest8theta)
Fs=128;
N=1024;Nfft=256;n=0:N-1;t=n/Fs;
window=hanning(256);
noverlap=128;
dflag='none';
for i=1:14
x=signal(i,1:5000);
powd(i,:)=psd(x,Nfft,Fs,window,noverlap,dflag);%计算未分频段,总数据的功率谱
x1=dtest8theta(i,:);%某一频段的脑电数据
powd1(i,:)=psd(x1,Nfft,Fs,window,noverlap,dflag);%计算该频段的功率谱
end
xdpowthetad = zeros(14,1);
xdpowthetad=mean(abs(powd1),2)./mean(abs(powd),2);%计算相对功率,用分频段功率谱比上不分频段的。
%save('G:\研三\音乐反馈数据\新算相对功率\xdpowthetad.mat','xdpowthetad');
save('C:\Users\25626\Desktop\滤波后数据\14\相对功率谱\5 3\betaspectral.mat','xdpowthetad');
end

  

function thetaspectral(signal,dtest8theta)
Fs=128;
N=1024;Nfft=256;n=0:N-1;t=n/Fs;
window=hanning(256);
noverlap=128;
dflag='none';
for i=1:14
x=signal(i,1:5000);
powd(i,:)=psd(x,Nfft,Fs,window,noverlap,dflag);%计算未分频段,总数据的功率谱
x1=dtest8theta(i,:);%某一频段的脑电数据
powd1(i,:)=psd(x1,Nfft,Fs,window,noverlap,dflag);%计算该频段的功率谱
end
xdpowthetad = zeros(14,1);
xdpowthetad=mean(abs(powd1),2)./mean(abs(powd),2);%计算相对功率,用分频段功率谱比上不分频段的。
%save('G:\研三\音乐反馈数据\新算相对功率\xdpowthetad.mat','xdpowthetad');
save('C:\Users\25626\Desktop\滤波后数据\14\相对功率谱\5 3\thetaspectral.mat','xdpowthetad');
end

  

matlab计算相对功率的更多相关文章

  1. Matlab 计算大数的阶乘

    http://hi.baidu.com/dreamflyman/item/11e920165596280fd0d66d9f >> syms k;>> kfac=sym('k!' ...

  2. Matlab计算矩阵和函数梯度

    一.差分与微分 我自己的理解. 二.求解 2.1 矩阵 这就是matlab的计算结果.太小的话放大些: c = 4 5 9 7 2 1 5 2 6 >> [x,y]=gradient(c) ...

  3. Matlab计算矩阵间距离

    夜深人静时分,宿舍就我自己,只有蚊子陪伴着我,我慢慢码下这段文字............ 感觉知识结构不完善:上学期看论文,发现类间离散度矩阵和类内离散度矩阵,然后百度,找不到,现在学模式识别,见了, ...

  4. Matlab计算的FFT与通过Origin计算的FFT

    实验的过程中,经常需要对所采集的数据进行频谱分析,软件的选择对计算速度影响挺大的.我在实验过程中,通常使用Origin7.5来进行快速傅里叶变换,因为方便快捷,计算之后,绘出来的图也容易编辑.但是当数 ...

  5. numpy和matlab计算协方差矩阵的不同(matlab是标准的,numpy相当于转置后计算)

    matlab是标准的,numpy相当于转置后计算 >> x = [2,0,-1.4;2.2,0.2,-1.5;2.4,0.1,-1;1.9,0,-1.2] x = 2.0000    0 ...

  6. 小小知识点(二十)利用MATLAB计算定积分

    一重定积分 1. Z = trapz(X,Y,dim) 梯形数值积分,通过已知参数x,y按dim维使用梯形公式进行积分 %举例说明1 clc clear all % int(sin(x),0,pi) ...

  7. MatLab计算图像圆度

    本文所述方法可以检测同一图像中的多个圆形(准确的说,应该是闭合图像). 在Matlab2010a中可以实现. 附录效果图: %颗粒圆度 clear;close all; %% %读取源图像 I = i ...

  8. matlab计算矩阵每列非0元素个数

    在统计分析中,有时候需要计算矩阵每列非0元素的个数,可以用以下方法: 先用find找到每列不为0的元素index,然后用count计数. 假设有矩阵A[M,N], 结果存在countZeros cou ...

  9. 用matlab计算线性回归问题

    看机器学习的时候遇到的第一个算法就是线性回归,高数中很详细的说明了线性回归的原理和最小2乘法的计算过程,很显然不适合手动计算,好在各种语言都有现成的函数使用,让我们愉快的做个调包侠吧 简单线性回归 R ...

随机推荐

  1. 常用的FTP命令

    FTP命令 ftp> ascii # 设定以ASCII方式传送文件(缺省值) ftp> bell # 每完成一次文件传送,报警提示. ftp> binary # 设定以二进制方式传送 ...

  2. hashtable初步——一文初探哈希表

    在<<STL源码剖析>>中,vector封装了数组的数据结构,list封装了链表的结构,而set和map封装了二叉树的数据结构.那么hashtable,具有怎么的作用呢,其本质 ...

  3. xpath模块使用

    xpath模块使用 一.什么是xml(百度百科解释如下) 可扩展标记语言,标准通用标记语言的子集,简称XML.是一种用于标记电子文件使其具有结构性的标记语言. 在电子计算机中,标记指计算机所能理解的信 ...

  4. 洛谷 P2257 YY的GCD 题解

    原题链接 庆祝: 数论紫题 \(T4\) 达成! 莫比乌斯 \(T1\) 达成! yy 真是个 神犇 前记 之前我觉得: 推式子,直接欧拉筛,筛出个 \(\phi\),然后乱推 \(\gcd\) 就行 ...

  5. html之锚点

    我命由我不由天 豆瓣:哪吒之魔童降世 哪吒之魔童降世简述 更新描述或海报 导演: 饺子 编剧: 饺子 / 易巧 / 魏芸芸 主演: 吕艳婷 / 囧森瑟夫 / 瀚墨 / 陈浩 / 绿绮 / 更多... ...

  6. 使用 keras 和 tfjs 构建血细胞分类模型

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识!

  7. Java构造器(构造方法/constructor)

    我们先来看一下什么是构造器: 1.构造器也叫构造方法或构造函数,分为有参构造器和无参构造器: 2.构造器也是一种方法,只不过是一种特殊的方法,它会在对象创建的时候被调用: 3.构造器最大的作用就是在创 ...

  8. CDN加速小水管动态应用技巧

    不得不说现在大陆和HK的云主机都是小水管模式,由于硬件的快速发展在这种小水管的情况下很难发挥出用户硬件资源的能力,当然可以加水管但费用很高,更多时候会浪费带宽:这个时候我们想到CDN加速,这种资源的好 ...

  9. C 旅店

    时间限制 : - MS   空间限制 : - KB  评测说明 : 1s,256m 问题描述 一条笔直的公路旁有N家旅店,从左往右编号1到N,其中第i家旅店的位置坐标为Xi.旅人何老板总在赶路.他白天 ...

  10. 六、【Docker笔记】Docker数据管理

    前几节我们介绍了Docker的基本使用和三大核心概念,那么我们在使用Docker的过程中,Docker中必然产生了大量的数据,对于这些数据我们需要查看或者对这些数据进行一个备份,也有可能容器之间的数据 ...