|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 wdhd 于 2016-9-20 13:32 编辑
标准刺激是由5个相同鼓点音组成的单调等间隔序列。
拍音是K-8bit2,音高C5,音长85ms;间隔长度为300,600,900ms。(现在只做600的)偏差刺激在标准刺激的基础上,仅对第4个IOI间隔进行10%的增减,分别对应提前、延后两类偏差刺激,序列尾音为本次实验目标音。
这个MS是DATA吧,要用到其中行列,不知杂用。。
function [coefs]=Macc_Average(Xmax,Xmin,fmax,fmin,Scales,Dataname)
fmax=50
fmin=20
SampFreq = 1000;
step=0.001;
Datalen=3600
Xmax=199 [coefs]=Macc_Average(Xmax,Xmin,fmax,fmin,Scales,Dataname)。。。。
。。。。
以上红字部分不完整,肯定有不对的地方,大概是这样子的,请高手改一下。多谢呀
以下是老师给的正确的主程序,蓝色部分的DATA不知怎么调进来。。。。求高手详解
signalnum = Datalen; % ERP 的数据长度
SampFreq = 1000; %采样率
step=0.001; % 中心频率fc的步长 0.001*SampFreq=1Hz
fmax = fmax/SampFreq; % 最高分析频率(归一化频率;1 对应SampFreq的值,0.2对应0.2*SampFreq)
fmin = fmin/SampFreq; % 最低分析频率(归一化频率) 0.06*SampFreq=60Hz, 0.001*SampFreq=1Hz
totalscal = ceil((fmax-fmin)/step)+1; % 所取尺度的数目, 调用ceil的目的是防止计算误差导致小数部分无限接近1而不等于1,这样FreqBins = linspace(fmin,fmax,totalscal); 就会出现少一个的误差
serialnumb = 1:signalnum;
serialtime = serialnumb/SampFreq*1000;
stimulatetime = serialtime - 1/SampFreq*1000 - 200; % 转换为刺激的记录时间,起点为刺激前200ms(每1个点对应 1/SampFreq*1000=1ms ), i.e.: -100 -99 -98 ....... 3400
% fb = 5; % 取cmorfb-fc小波进行实验,带宽参数为fb
% fc = 2; % 中心频率fc
% wavename = 'cmor5-2';
fb = 1; % 取cmorfb-fc小波进行实验,带宽参数为fb
fc = 0.5; % 中心频率fc
wavename = 'cmor1-0.5';
FreqBins = linspace(fmin,fmax,totalscal); % 将频率轴在分析范围内等间隔划分
Scales = fc./ FreqBins; % 计算相应的尺度参数
RealFreqBins = FreqBins * SampFreq; % 尺度所对应的实际频率,% 转换为实际频率,维数:1 X totalscal , % i.e.: 20 21 22 ....... 49 50
coefs=cwt(Dataname,Scales,wavename); %小波变换
f=scal2frq(scal,wavename,1/fs); %将尺度转换为频率
imagesc(stimulatetime,f,abs(coefs)); %绘制色谱图
figure
pcolor(stimulatetime,RealFreqBins,abs((coefs).^2));
colormap jet;
shading interp;
colorbar;
axis([min(stimulatetime) max(stimulatetime) min(RealFreqBins) max(RealFreqBins)]);
[ 本帖最后由 t-cat 于 2010-3-24 22:30 编辑 ]
|
|