精华内容
下载资源
问答
  • Matlab基本函数-floor函数

    千次阅读 2019-02-02 14:10:59
    Matlab基本函数-floor函数
                   

    1、floor函数:朝负无穷大方向取整

    2、用法说明:

          y = floor(x) 函数将x中元素取整,值y为不大于本身的最小整数。对于复数,分别对实部和虚部取整

    3、用法举例

    >> x = [3+4i 6-7i 9+11i 1-4i 3.4-4.5i 90.67-123i]x =   1.0e+02 *  Columns 1 through 5   0.0300 + 0.0400i   0.0600 - 0.0700i   0.0900 + 0.1100i   0.0100 - 0.0400i   0.0340 - 0.0450i  Column 6   0.9067 - 1.2300i>> y = floor(x)y =   1.0e+02 *  Columns 1 through 5   0.0300 + 0.0400i   0.0600 - 0.0700i   0.0900 + 0.1100i   0.0100 - 0.0400i   0.0300 - 0.0500i  Column 6   0.9000 - 1.2300i

    4、附录

    >> help floor floor  Round towards minus infinity.    floor(X) rounds the elements of X to the nearest integers    towards minus infinity.     See also round, ceil, fix.    Overloaded methods:       codistributed/floor       gpuArray/floor    Reference page in Help browser       doc floor



               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • Matlab基本函数 floor函数

    千次阅读 2018-11-05 02:41:52
    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章...分享知识,造福人民,实现我们中华民族伟大复兴!   ... 1、floor函数:朝

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    1、floor函数:朝负无穷大方向取整

    2、用法说明:

          y = floor(x) 函数将x中元素取整,值y为不大于本身的最小整数。对于复数,分别对实部和虚部取整

    3、用法举例

    >> x = [3+4i 6-7i 9+11i 1-4i 3.4-4.5i 90.67-123i]x =   1.0e+02 *  Columns 1 through 5   0.0300 + 0.0400i   0.0600 - 0.0700i   0.0900 + 0.1100i   0.0100 - 0.0400i   0.0340 - 0.0450i  Column 6   0.9067 - 1.2300i>> y = floor(x)y =   1.0e+02 *  Columns 1 through 5   0.0300 + 0.0400i   0.0600 - 0.0700i   0.0900 + 0.1100i   0.0100 - 0.0400i   0.0300 - 0.0500i  Column 6   0.9000 - 1.2300i

    4、附录

    >> help floor floor  Round towards minus infinity.    floor(X) rounds the elements of X to the nearest integers    towards minus infinity.     See also round, ceil, fix.    Overloaded methods:       codistributed/floor       gpuArray/floor    Reference page in Help browser       doc floor



               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 直接进入正题!本文程序的功能可实现的效果如下图所示?这个程序可以大致分为GUI界面的设计优化以及车牌识别功能的代码实现,下面给大家一一介绍一、GUI界面的设计...是MATLAB用户可视化交互式的工具,运用GUI生成...

    直接进入正题!

    本文程序的功能可实现的效果如下图所示?

    6c99c55863b3e3723e36a70dc6b2a3b4.png

    这个程序可以大致分为GUI界面的设计优化以及车牌识别功能的代码实现,下面给大家一一介绍e5bbc9bb740a8c1aa69543f3212399b8.png

    一、GUI界面的设计优化

    首先给大家介绍什么是GUI,GUI 为图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面,是MATLAB用户可视化交互式的工具,运用GUI生成的操作界面用户可以不用浏览繁冗的代码而进行操作。像效果图所示,我们可以直接通过简单的按键就可以实现程序的功能,美观并且简洁。下面分步介绍:

    第一步:在命令行输入“guide”指令

    输入后会出现一个这样的界面,点击“Blank GUI”后就可以开始设计自己想要的gui界面。

    0f3f6afd2862d20e30dbd3960e13e508.png

    9ec438ded959f21bdc6be3490eaadceb.png

    第二步:添加按钮及坐标轴

    在这一步中可以按照个人需求在左侧添加元素,该系统只需一定数量的坐标轴和按钮,坐标轴是为了在代码中可以把图片插入进去。通过白色边框右下角的黑点我们可以设置GUI界面的大小。

    7339c273392d7fb472496e766022f4de.png

    (添加所需元素后)

    在没有运行的时候,axes是看不见坐标轴的,运行的时候会变成下图这个样子?。

    aa085146c52d70c293fd7ba6d2571e87.png

    我们可以看到每个axes都有坐标轴,为了美观,我们可以把坐标轴给隐藏掉,右键axes1控件,View Callbacks——>CreateFcn,然后在该控件的CreateFcn函数下面输入下面四行代码:

    set(gca,'XColor',get(gca,'Color'));% 这两行代码功能:将坐标轴和坐标刻度转为白色set(gca,'YColor',get(gca,'Color'));set(gca,'XTickLabel',[]); % 这两行代码功能:去除坐标刻度set(gca,'YTickLabel',[]);

    6ac28d529b4e65ccb4ccc3750e901cc9.png

    (逐一处理后的GUI界面)

    第三步:按钮名称设置及关闭按钮名称的设置在guide指令中双击按钮,就会弹出来一个界面?

    bc2217e8f744ad37861adf1974d4b48d.png

    在String中直接修改想要的名称即可。最后,关闭GUI界面则在对应按钮的代码行,输入“close”即可。在第二步设计结束后,MATLAB会自动生成结构代码,此时这需要将功能实现的代码整合到结构中去就可以了。

    我们先把GUI界面按钮1设置为载入图像。

    function pushbutton1_Callback(hObject, eventdata, handles)%结构代码[filename pathname]=uigetfile({'*.jpg';'*.bmp'}, 'File Selector');f=imread([pathname '\' filename]);handles.f=f;guidata(hObject, handles);axes(handles.axes1);%将图像载入到坐标轴1imshow(f);title('原始图像');

    27eb619bd25483516cf49f7890e52101.png

    二、车牌识别功能实现

    再在GUI界面按钮2设置为处理图像,在此按钮中实现了车牌识别功能,下面给大家介绍,该功能的实现分为4个步骤,一是定位蓝色车牌区域;二是旋转图像;三是剪切蓝色车牌图像;四是分割字符并输出。

    第一步:定位蓝色车牌区域

    function pushbutton2_Callback(hObject, eventdata, handles)%结构代码%% 定位蓝色区域f=handles.f;gray=3*f(:,:,3)-f(:,:,1)-f(:,:,2);axes(handles.axes2);%将图像载入到坐标轴2imshow(gray),title('保留蓝色色域');%形态学处理level=graythresh(gray); %利用Ostu法获取图像的阈值bw=im2bw(gray,level); %根据Ostu法分割车牌图像bw1=bwareaopen(bw,500);%删除面积小于500的区域se=strel('cube',15);%创建一个边长为15的正方形bw2=imclose(bw1,se);%闭运算连使整个车牌区域连接在一起

    定位的功能只适用于车牌是蓝色的非蓝色汽车。

    第二步:旋转图像

    毕竟随手一拍e5bbc9bb740a8c1aa69543f3212399b8.png,无法确保角度,为了最终识别的效果,添加旋转的功能。程序应用的是Radon变换,当然也可以使用Hough变换。

    %% 车牌矫正(利用radon变换)theta=0:179;r=radon(bw2,theta);[m,n]=size(r);c=0;for i=1:m    for j=1:n        if r(1,1)            r(1,1)=r(i,j);            c=j;        end    endendrot=90-c;fx=imrotate(f,rot,'crop');%旋转axes(handles.axes3);%将图像载入到坐标轴3imshow(fx);title('旋转后的图像');

    第三步:剪切蓝色车牌图像在实现过程中我们可以使用regionprops函数(regionprops:用途是get the properties of region,即用来度量图像区域属性的函数。),真是非常的友好,能超级强大,在这就不详细介绍。

    %% 剪切定位车牌区域s1=regionprops(bw2,'BoundingBox','Centroid') ; %获取车牌矩形区域,即二值图中值为1的矩形框xy=s1(1).BoundingBox;%获取车牌矩形区域左上角坐标及矩形的长和宽, xy(1)为矩形框左上角的y坐标,xy(2)为矩形框左上角的x坐标fcrop=f(round(xy(2)):round(xy(2)+xy(4)),round(xy(1)):round(xy(1)+xy(3)),:) ;axes(handles.axes4);%将图像载入到坐标轴4imshow (fcrop),title('定位剪切后的蓝色车牌图像');

    第四步:分割字符并输出到屏幕

    想用利用regionprops函数进行字符分割,就必须保证每一个车牌字符通过形态学处理后都分别为单独的连通区域,由于本文处理的车牌干扰因素比较多,形态学处理也略微复杂了一些,对于其他干扰因素较少的图像来说,简单处理后就可以使用此函数。在GUI界面中需要将字符逐一分割然后输出到坐标轴,如果不需要GUI界面就可以直接通过for循环挨个输出。

    %% 分割字符fgray=rgb2gray(fcrop);level2=graythresh(fgray);bw3=im2bw(fgray,level2);% imshow(bw3);title('定位剪切后的二值图像');se2=strel('line',2,90);se3=strel('cube',4);se4=strel('disk',1);bw3o=bwareaopen(bw3,30);%imshow(bw3o);title('删除小于20面积后的图像');bw3oe=imerode(bw3o,se4);%imshow(bw3oe);title('二值图像腐蚀后')bw3oc =imclose(bw3oe,se2);%imshow(bw3oc);title('二值图像闭运算后');bw4=imclearborder(bw3oc);%imshow(bw4);bw4d=imdilate(bw4,se3);bw4d=imdilate(bw4d,se3);%imshow(bw4d);title('膨胀后的图像');bw5=bwareaopen(bw4d,400);axes(handles.axes5);imshow(bw5);title('删除小于400后的图像');  s2=regionprops(bw5,'BoundingBox','Centroid');xy=s2(1).BoundingBox;bw6=fcrop(floor(xy(2)):floor(xy(2)+xy(4)),floor(xy(1)):floor(xy(1)+xy(3)),:);axes(handles.axes6);%将图像载入到坐标轴6imshow(bw6);title(num2str(1));%此处省略字符2-字符6,代码相同xy=s2(7).BoundingBox;bw6=fcrop(floor(xy(2)):floor(xy(2)+xy(4)),floor(xy(1)):floor(xy(1)+xy(3)),:);axes(handles.axes12);%将图像载入到坐标轴12imshow(bw6);title(num2str(7));

    最后将按钮3设置为退出系统。

    function pushbutton3_Callback(hObject, eventdata, handles)close;

    在前面提到隐藏坐标轴的方法,在代码中的实现如下。

    %此处为一个坐标轴去除的代码,其余方法相同故省略。function axes1_CreateFcn(hObject, eventdata, handles)set(gca,'XColor',get(gca,'Color'));set(gca,'YColor',get(gca,'Color'));set(gca,'XTickLabel',[]); set(gca,'YTickLabel',[]);

    整个系统从设计到实现到这里也就结束了,希望大家的学习生活ec41b9361c33fd62540213af29be5ca9.png事顺利!

    39ef096a5f7bccc903defac619cce19c.png

    展开全文
  • 中的行为数据导入MATLAB用xlsread函数读取指定位置的EXCEL文件 [BehaviorData,~,Raw]=xlsread('D:\2018.04-2021.07Postgraduate\11-biye\XQEMMN\data\Sub1\Sub1Behavior.xlsx'); 得到BehaviorData和Raw两组数据,后...
    36f4afdb3532c8e33f0d2c5ce8502389.png

    脑电图(Electroencephalogram,EEG)是通过精密的电子仪器,从头皮上将脑部的自发性生物电位加以放大记录而获得的图形,同时具有极高的时间分辨率。EEGLAB和ERPLAB常被用来处理脑电数据,因其操作方便且免费。

    EEGLAB和ERPLAB提取ERP成分的同学都知道,Extract epochs或Extract bin-based epochs的方法可以锁定感兴趣的事件诱发的时刻,对后续进行ICA分析、叠加平均有利。但它对事件码的依赖很高。比如关键的事件码丢失了,将无法识别潜在的有效的试次,会影响叠加平均的有效试次数,降低信噪比。

    不愿透露姓名的线收集了个被试的任务态脑电数据,预处理时发现某类事件码丢失了1/6(300余个码)。丢码可能导致数据质量(信噪比)下降,让人难以忍受,尽管它不足以使整个数据无效。早前听说了融合行为数据处理事件码,但没有真正实践过,不知效果如何。为了“拯救”自己的第一个脑电数据,我开始摸索这种方法,结果收获蛮多的,下面跟大家分享一下这个过程。1.检查事件码是否丢失首先,利用EEGLAB将数据文件导入MATLAB,得到图1内容。在EEGLAB界面可以看到这段脑电数据的基本信息,由于我已经知道这些信息来自MATLAB中暂存的数据,所以我在右边的工作区的EEG中寻找它其他的详细信息。e83e64a9910f1a12aae10b9f3a748d19.png图1:将EEG数据导入MATLAB1.1.查看EEG数据内容从图1可以看出EEG是个1×1struct(结构体),别看只是1×1,它包含了大量的数据。细心的同学会发现这些字段大多是空值[](图2),它们大概是为EEGLAB后续分析EEG数据而存在的,我们暂时可以不用管它们的含义。

    296a1742e63ab5eda7e9d02357fd9d32.png

    图2:EEG数据

    2461ceeefe193059de8ea397eeb65064.png

    图3:存放电压幅值、时间戳和事件码的字段在非空的字段里,我们可以看到times和data含有大量的数据。从名字和数据的长度来看,它们分别是EEG记录的时间长度和在各个电极点对应的电压幅值。1.2.查看与事件码相关的字段接下来可以看到event和urevent,它们是结构体。双击event可以发现它存放了3列信息(图4):事件码(type)、对应的潜伏期(latency,它表示该事件码发生时,距脑电系统开始记录脑电幅值的时间长度,单位是毫秒)和序号(urevent)。26fb0da3c6ea329468bbf54f3b0b8bbf.png图4:EEG.event时间精确到毫秒级是脑电数据的核心特点之一,所以EEG.event是脑电数据里非常重要的数据。EEG.event的数据可直接复制到EXCEL,然后用数据透视表的方式计算每类事件的次数。下图(5)展示了记录到的事件次数和实验事先设定好的次数。db20987e3e3bafa0edce1ca0f5534e0c.png图5:记录到的事件数和事先设定的事件数比较经过比较发现,322个事件码{1}丢失了,而{2,3}比设定的次数多,另外还出现了没有设定的码{5,7}。1.3.此实验的流程和事件码设置为了让大家了解本实验事件码的设置,用下图(6)展示本次实验的一个Trial流程。图片描述事件码出现的类型、时刻、次数和打入方式。1.在每个试次开始时,用Writeport的方法打{1,2,3}中的一个。2.接着用OnsetSignalData的方法在控件Stim处打{11,12,21,22,31,32,33,34,35}等9个码中的一个。3.在700~1000ms之后,用Writeport的方法打{1}。4.随后用OnsetSignalData的方法在控件StandardStim处打{11,22,31,32,33,34,35}等7个码中的一个。5.在700~1000ms后,结束一个试次。6.反应码{4,6}由被试按键触发,用Writeport的方法打入,它可能出现在某个inline语句结束的时刻。97480a53130290dfd66f8fb46ba8a665.png图6:一个试次的E-prime流程从流程图来看,很可能事件码{1}是被反应码挤掉了。比如下图(图7)中第16个码开始,依设定的顺序,应该是{6}{1}{11}{1}{11}{1}...,而{11}前的第一个事件{1}丢失了,变成{6}{11}{1}{11}{1}...。检查其他位置的{4}或{6}或{7},都存在这样的情况。因此猜测是事件码{1}被反应码或者错码替代了。

    8b6f136f188e66e2afbd05eb8d685a43.png

    图7检查自己的E-prime程序,发现在每个Trial开始前,我应该用
    writeport &378,0
    将打码端口清零?还好我们能用行为数据处理事件码,不至于损失惨重。

    2.提取行为数据

    在本例EEG数据中,{11,12,21,22,31,32,33,34,35}等9个码没有发生丢码。它们是依赖控件(Stim或StandardStim)的Onset产生的码,在潜伏期上与控件的onset时间是同步的。因此,我们可以用控件的Onset时间代表事件码发生的行为潜伏期,与事件码的EEG潜伏期匹配。2.1.如果事件码的EEG潜伏期与行为潜伏期匹配上,会有什么结果?行为数据中,以OnsetTime结尾的变量表示控件Onset时的潜伏期(距离实验程序进入第一个控件时的时长),精确到毫秒。92468a233091126b3934282aadb3bb16.png图8EEG时间数据和行为时间数据既然都精确到毫秒,按理讲,EEG事件码的潜伏期与控件Onset的潜伏期的差值应该为某个稳定的值。这个值应该存在下图中描述的规律。

    2d8b2d079714d89eb2c4277c647b36ce.png

    图9

    因此我们可以找到匹配的事件码并查看它们的EEG潜伏期和行为潜伏期的差值是否为某个稳定的值。由于实验前欠缺考虑,程序里没有设置记录Stim和StandardStim控件的Onset时间,但记录了Wait1.OnsetTime。从流程图(图6)可以看出,Wait1.OnsetTime与Stim.OnsetTime的时间是很接近的,理论上只相差一帧11ms左右(此设备刷新率为85Hz)。因此可以用Wait1.OnsetTime代替Stim.OnsetTime,与事件码的潜伏期做减法,查看结果是否为某个稳定的值。本实验中,行为数据在E-prime程序运行之后产生的E-DataAid file。

    9b19bc6ef41c57a07c5fb7c1c73baedd.png

    图10.实验结束后产生的数据文件

    我们需要将E-DataAid文件转化为EXCEL数据并提取其中的:FixMark、EmoMark、EmoMark2、Wait1.OnsetTime、反应时间等数据。

    这里,我们用Wait1.OnsetTime表示EmoMark的行为潜伏期,而EmoMark2由于没有记录到其行为潜伏期,所以无法予以匹配EEG潜伏期(详见下文结果)。

    由于我的EEG数据是从正式实验开始记录的,所以行为数据需要剔除练习的行数据(顺便把休息阶段的行数据剔除)。得到几列数据为:

    0093a069b6718dd9ee2d0059066cc4d2.png

    图11:EmoMark和EmoMark2对应图6中Stim和StandardStim开始时的事件码;可用Wait1.OnsetTime代替Stim.OnsetTime,表示EmoMark的行为潜伏期。

    3.匹配EEG事件码潜伏期和行为数据潜伏期

    在后续分析中,我们对{11,12,21,22,31,32,33,34,35}等9个码发生后的ERP成分感兴趣。它们是以OnsetSignalData的方式打入的,在行为数据中有潜伏期数据。所以我们以这些码为对象,尝试EEG潜伏期和行为潜伏期的匹配。

    3.1.提取EEG数据中感兴趣的事件码

    首先,在EEGLAB界面导入此被试的EEG数据。

    64e64e2bf9c912872223baccae09a66b.png

    图12然后,利用MATLAB脚本代码提取EEG数据中的事件码数据。
    %提取EEG事件码数据ureventData = EEG.urevent;eventData = EEG.event;

    设置感兴趣的事件码。

    %设置感兴趣的事件码。Mark=[11 12 21 22 31 32 33 34 35];
    找出上述事件码在EEG事件码数据中的位置。
    Loc1=logical(zeros(1,length(ureventData)));%建立逻辑型空向量Loc =logical(zeros(1,length(ureventData)));%建立逻辑型空向量for i=1:length(Mark)%判断事件码在数据中的位置    Loc1=[ureventData(:).type]==Mark(i);%判断存在事件码的位置    Loc=Loc|Loc1;                       %或然关系,表示该位置存在一个事件码end
    将感兴趣的事件码从EEG事件码数据中提取出来,并命名为MarkData。
    %将感兴趣的事件码从EEG事件码数据中提取出来。EEGMark = find(Loc);for i=1:length(EEGMark)    MarkData(i).type=[ureventData(EEGMark(i)).type];    MarkData(i).latency=[ureventData(EEGMark(i)).latency];end
    从EEG.event中提取了感兴趣的事件码数据,其中有2160行数据,有2160个感兴趣的事件码:

    341265177e35bc2f444bf313a01c1e69.png

    图133.2.将2.中的行为数据导入MATLAB用xlsread函数读取指定位置的EXCEL文件
    [BehaviorData,~,Raw]=xlsread('D:\2018.04-2021.07Postgraduate\11-biye\XQEMMN\data\Sub1\Sub1Behavior.xlsx');

    得到BehaviorData和Raw两组数据,后者是含标题的数据。

    75aa05e81443d15fa7b345cf2e2c5cfb.png

    图14

    3.3.将事件码的EEG潜伏期和行为潜伏期按顺序排列

    利用MATLAB脚本代码将行为数据搬到MarkData中,它实现数据搬家的功能,如图15展示。
    TypeDif=0;%建立字段用于储存事件码的差异for i=1:length(MarkData)    k=floor((i+1)/2);  %行为数据的第k行数据放到Mark数据的第i行    j=2-mod(i,2);     MarkData(i).BehType=BehaviorData(k,j);    %行为数据的第1列数据放到Type列单数行,第2列数据放到Type列双数行。    MarkData(i).BehLatency=(1+(-1)^(j+1))/2*BehaviorData(k,4); %行为数据的第4列数据放到Latency列单数行,第5列数据放到Latency列双数行。    MarkData(i).LatencyDif=(1+(-1)^(j+1))/2*(MarkData(i).BehLatency-MarkData(i).latency);%计算时间戳的差异    MarkData(i).TypeDif= MarkData(i).type-MarkData(i).BehType;  %判断事件码是否有差异    TypeDif = TypeDif + abs(MarkData(i).TypeDif);   %计算事件码的差异end

    得到新的MarkData:

    0b8e97c7021e2a48c7d4781cea46f510.png

    图15

    3.4.检查代码运行的结果是否符合预期在MarkData中(图15左),LatencyDif计算了EEG事件码的潜伏期和行为潜伏期的差值,发现是一个相对稳定的值,即42150毫秒,表明脑电数据是在实验程序开始42150毫秒(42.15秒)后开始记录的;在实验的最后阶段,差值变为42154毫秒左右,表明误差还是很稳定的。

    bd30f0441acdf6daf7f9ce9ffe38ee1b.png

    图16

    另一方面,我们在上述代码中用TypeDif记录了事件码的差值,结果TypeDif得到全为0,表明EEG事件码和行为数据是匹配的。

    3.5.用行为数据复原事件码的EEG潜伏期的条件

    根据上述的结果,我们发现用行为数据复原事件码的EEG潜伏期的条件有:a.事件码由OnsetSignalData的方式打,且行为数据记录了该控件的OnsetTime;b.知道至少一个事件码的EEG潜伏期和对应的行为潜伏期,用以计算潜伏期差值;4.结合行为数据处理EEG事件码97480a53130290dfd66f8fb46ba8a665.png图17.事件码出现的位置和数量4.1.保留或去除以下条件的事件码a.保留感兴趣的事件{11,12,21,22,31,32};b.保留事件码{1}后面的{11,12,21,22,31,32};c.去除按键所在的事件;4.2.用MATLAB脚本代码判断符合上述条件事件码
    SaveNum=0;%建立字段,用于计算保留的事件码数for  i=1:length(MarkData)    k=floor((i+1)/2);  %行为数据的第k行数据放到Mark数据的第i行    j=2-mod(i,2);     %↓判断FixMark是否为1,去除2,3事件码    MarkData(i).FixChnMark = floor(1/MarkData(i).FixMark);%floor(1/2)=0,floor(1/3)=0;    %↓判断是否作了按键反应,去除按键所在的事件;    if  BehaviorData(k,6)~=0 & j==2        MarkData(i).ReactMark = 0;    else        MarkData(i).ReactMark = 1;    end    %↓保留同时满足上述两个条件的事件    MarkData(i).Save = MarkData(i).ReactMark & MarkData(i).FixChnMark;    %↓计算保留的事件数    SaveNum = SaveNum+MarkData(i).Save;end

    得到SaveNum=1517。

    dc9e91de633dc18e25265ce7ff3f878e.png

    图18

    4.3.抽样检查运行结果是否符合预期

    c5402424261fa6f6830d9a99ca4069de.png

    图19.行为数据

    f17ab6c3161780b17ad637006adceca9.png

    图20

    通过简单的抽样检查发现运行结果是符合预期的。

    4.4.取出符合条件的事件码

    j=1;for i=1:length(EEGMark)    if MarkData(i).Save==1        Chnevent(j).type=MarkData(i).type;        Chnevent(j).latency=MarkData(i).latency;        Chnevent(j).urevent=j;        Chnurevent(j).type=MarkData(i).type;        Chnurevent(j).latency=MarkData(i).latency;                j=j+1;    endend

    命名为Chnevent和Chnurevnt,对应EEG里的EEG.event和EEG.urevent。

    4.5.将处理好的事件码数据替换EEG数据中的事件码数据
    %替换事件码数据EEG.event=Chnevent;EEG.urevent=Chnurevent;

    240a44c40ee60cdfe28990133291932d.png

    图21至此,我们结合行为数据,剔除了EEG事件码中不符合条件的事件。后期采用Extract bin-based epochs的方法可以只定位感兴趣的事件码{11,21,12,22,31,32},而不需要依赖{1}和反应码。比如Binlist可以写成如下格式(左):

    c021a8e60da200c547efd4d88769bfae.png

    图22

    5.后续

    如果你不想用结合行为数据处理的EEG事件码,却又已经替换了,可以用以下代码还原旧的EEG事件码数据。在代码开始时,我们将旧的EEG事件码储存在ureventDataeventData
    %复原事件码数据EEG.urevent = ureventData;EEG.event = eventData;
    处理完事件码之后,继续在EEGLAB完成其他操作,EEG数据会自动更新事件码数据。本推文的脚本代码仅能处理本次实验收集的事件码数据,不具有广泛的代表性,仅供参考。感兴趣的朋友可在后台回复EEGMarkReco,获取本推文的数据和脚本代码。谢谢关注!
    展开全文
  • 定义Z为从peaks函数返回的矩阵。Z 将最小和最大数据值四舍五入Z,并将这些值分别存储在zmin和中zmax。zlevs在zmin和之间定义为40个值zmax。zmin 绘制等高线。figure 定义zindex为zmin和zmax之间的向量,间隔为2。...
  • ps是一款强大的图像处理软件,通常的图像处理都可以基于ps去做。但是一些专业的人士对图像有特殊需求,ps难以完成。例如遥感领域的tif图像含有地理参考,ps不能保证图像的头文件...采用matlab实现该功能。若干相关函...
  • matlab2c开发全解教程matlab2c调用方法:1、下载matlab2c动态链接库 2、将matlab2c.dll、matlab2c.lib和matlab2c.h放到项目头文件目录下 3、在cpp文件中引入下面的代码#include "Matlab2c.h" #pra
  • 1)fix(n)的意义是取小于n的整数(是向零点舍入的意思是往零的方向上靠),这是一类应用在整数取值上的函数,就如同以前我们所研究的求整问题,例如,fix(pi)=3;fix(3.5)=3;fix(-3.5)=-3;我这样举例的意思是说明这与四...
  • x(i,:)代表第i行的所有元素...1、floor函数用来对数值进行取整,取整后的值不大于原值。 floor(x)为不大于x的最大整数;floor(a+bi)为对实部和虚部同时进行取整后,不大于实部和虚部的数; 2、n=length(a);函...
  • floor函数  floor(x),有时候也写做Floor(x),其功能是“下取整”,或者说“向下舍入”,即取不大于x的最大整数   (与 “四 舍 五入”不同,下取整是直接去掉小数部分),例如:  x=3.14,floor(x)=3  y=9...
  • [连载 0]Vrep入门介绍[连载 1]Vrep小车建模——前进和转向[连载 2]Vrep小车建模——内嵌脚本[连载 3]Vrep小车建模——matlab控制[连载 4]Vrep导入三维模型——PUMA560机械臂[连载 5]Vrep--Matlab Robitic Toolbox--...
  • 无82云学习MATLAB专题音乐合成篇【写在前面】 学过物理我们知道,声音的本质是波,任何声音都可以用波形来描述,而音乐,用电子工程中的术语解释,就是周期信号的幅频随时间节奏变化的一种表述。所以,只要研究清楚...
  • Matlab floor函数与round的区别

    千次阅读 2013-08-05 16:07:11
    floor: B = floor(A) rounds the elements of A to the nearest integers less than or equal to A. For complex A, the imaginary and real parts are rounded independently. Examples a = [-1.9, -0.2,
  • 1)fix(n)朝零方向取整,这是一类应用在整数取值上的函数,就如同以前我们所研究的求整问题,例如,fix(pi)=3;fix(-1.3)=-1; fix(1.3)=1; 2)round(n):四舍五入到最近的整数,如round(-1.3)=-1;round(-1.52)=-2;...
  • 1、floor(x): 2、floor(t): 3、floor(t,unit): 1、floor(x): 取整 2、floor(t): 将持续时间数组中的每个值舍入到小于或等于该值的最接近的秒数 3、floor(t,unit): 将t的每个元素舍入到...
  • Matlab函数Floor,Ceil,Fix,Round使用详解floor:朝负无穷方向舍入B=floor(A)roundstheelementsofAtothenearestintegerslessthanorequaltoA.ceil:朝正无穷方向舍入B=ceil(A)roundstheelementsofAtothenearest...
  • 一起来学演化计算-matlab基本函数inf, isempty, round, floor ,fix觉得有用的话,欢迎一起讨论相互学习~Follow Meinfmatlab中 inf无穷大量+∞,-inf为无穷小量-∞,在Matlab程序执行时,即使遇到了以0为除数的运算,...
  • mod-计算模数:mod Modulus after division.mod(x,y) is x - n.*y where n = floor(x./y) if y ~= 0. If y is not aninteger and the quotient x./y is within roundoff error of an integer,then n is that integer...
  • matlab中的round、ceil、floor、fix函数

    千次阅读 2015-03-30 20:15:16
    matlab中,round、ceil、floor、fix都是取整函数函数, round函数是个四舍五入函数,例:round(2.7)=3; round(1.2)=1; round(-1.3)=-1 ...floor函数是不超过X的最大整数,例:floor(2.3)=2; floor(-2.3)=-3 fix
  • Matlab近似函数 fix:向0取整 fix(-3.1) = -3; fix(3.1) = 3; floor:向负无穷取整 floor(-3.1) = -4; floor(3.1) = 3; ceil:向正无穷取整 ceil(-3.1) = -3; ceil(3.1) = 4; round:四舍五入 round(-3.1) = -3; ...
  • MATLAB取整函数(1)fix(x) : 截尾取整. fix( [3.12 -3.12]) ans = 3 -3 (2)floor(x):不超过x 的最大整数.(高斯取整) floor( [3.12 -3.12]) ans = 3 -4 (3)ceil(x) : 大于x 的最小整数 ceil( [3.12 -3.12...
  • 作者:盛夏的猫宁来源:SegmentFault 思否社区傅里叶分析公式法下例 是将振幅为1的5Hz正弦波和振幅为0.5的10Hz正弦波相加之后进行傅里叶分析。...%生成和信号%傅里叶变换m = floor(N/2)+1;a=zeros(1,m);b...
  • Matlab取整函数有: fix, floor, ceil, round.具体应用方法如下: fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1; floor,顾名思义,就是地板,所以是取比它小的整数,即朝负无穷方向取整,如floor(-1.3)=-2; floor...
  • Matlab取整函数有: fix, floor, ceil, round四种,具体使用方法如下: (1) fix 朝零方向取整 如 fix(-1.3)=-1 fix(1.3)=1; (2) floor 朝负无穷方向取整(不超过x 的最大整数.(高斯取整)) 如 floor(-1.3)=-...
  • matalb取整函数中round、fix、ceil和floor函数在fpga中的实现 用FPGA进行数字信号处理过程中,很多时候需要将一个数的结果中的小数据部分截断掉,也就是数据取整,在matlab中这样的函数有4个:round、fix、ceil和...
  • matlab中有4个取整函数分别是Floor\fix\round\ceil Floor 意译为:向负无穷大方向取整 语法 floor(X) B = idivide(int32(TmpFloorNum),int32(9),‘floor’); fix 意译为:向零方向取整 语法 fix(X) B = i...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 486
精华内容 194
关键字:

floor函数matlab

matlab 订阅