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. springMVC容器简介和执行流程

    先来看一下,初始化的大体流程:  然后,我们再来看一下,我们的控制器DispatcherServlet的类图及继承关系.  系统启动的时候根据配置文件创建spring的容器, 首先是发送http请求到 ...

  2. 自定义实现 PyQt5 下拉复选框 ComboCheckBox

    一.前言 由于最近的项目需要具有复选功能,但过多的复选框会影响界面布局和美观,因而想到把 PyQt5 的下拉列表和复选框结合起来,但在 PyQt5 中并没有这样的组件供我们使用,所以想要自己实现一个下 ...

  3. html5 window.postMessage 传递数据的使用

    window.postMessage(图片介绍): 发送方(图片介绍): 接收方(图片介绍): 个人测试一(iframe): 发送方,地址为:http://localhost:63342/HelloH ...

  4. jupyter notebook 中同时添加Python2和3,在conda下配置R语言运行的环境

    1.第一步,安装Python2的环境 首先,在安装anaconda的时候先选择一个Python安装,我先安装的是Python3 然后,在anaconda Prompt下创建Python2环境 现在,还 ...

  5. Windows平台安装Beautiful Soup

    Windows平台安装Beautiful Soup 2013-04-01 09:31:23|  分类: Python|举报|字号 订阅     Beautiful Soup是一个Python的一个库, ...

  6. NOI ONLINE 入门组 魔法 矩阵快速幂

    做了这道题我才发现NOI入门组!=NOIP普及组 题目链接 https://www.luogu.com.cn/problem/P6190 题意 给出一张有向图,你有K次机会可以反转一条边的边权,即让它 ...

  7. TensorFlow 基本变量定义,基本操作,矩阵基本操作

    使用 TensorFlow 进行基本操作的实例,这个实例主要是使用 TensorFlow 进行了加法运算. 包括使用 constant 常量进行加法运算和使用 placeholder 进行变量加法运算 ...

  8. 一文看懂神经网络初始化!吴恩达Deeplearning.ai最新干货

    [导读]神经网络的初始化是训练流程的重要基础环节,会对模型的性能.收敛性.收敛速度等产生重要的影响.本文是deeplearning.ai的一篇技术博客,文章指出,对初始化值的大小选取不当,  可能造成 ...

  9. [一起读源码]走进C#并发队列ConcurrentQueue的内部世界

    决定从这篇文章开始,开一个读源码系列,不限制平台语言或工具,任何自己感兴趣的都会写.前几天碰到一个小问题又读了一遍ConcurrentQueue的源码,那就拿C#中比较常用的并发队列Concurren ...

  10. C语言把整数转换为字符串

    目录 1.把整数/长整数格式化输出到字符串 2.注意事项 3.版权声明 各位可能在网上看到用以下函数可以将整数转换为字符串: itoa(); //将整型值转换为字符串 ultoa(); // 将无符号 ...