Matlab | 对带标签数据信号分类并作图保存到本地

折月煮酒 提交于 2020-02-07 02:58:07

本次操作的目的是将数据集S01(大小为500x61x180,500组数据,61通道,每个通道记录了180个值)按照标签(大小为1x500,取值-1和1分为两类)将不同类别的数据分开,并分别进行作图保存到本地。

load('D:\RESEARCH\DATASET\ERRP dataset from gaze\ErrP data from gaze\S01eeg.mat')
load('D:\RESEARCH\DATASET\ERRP dataset from gaze\ErrP data from gaze\S01labels.mat')

%错误信号的叠加平均
S01_error(61,180)=0;%预定义信号及信号长度
m=0;
for n=1:500
    if  S01labels(1,n)==-1
        m=m+1;%计数,最后要平均的
        for i=1:61
            for j=1:180
                S01_error(i,j)=(S01_error(i,j)+S01eeg(n,i,j))/m;
            end
        end
    end
end
errorcount = m
for i=1:61
    n=i;
    figure(i);
    plot(1:180,S01_error(i,:));
    set(i,'visible','off');%设置不打开图像窗口
    name = num2str(n);
    name = strcat('D:\RESEARCH\CODE\errn from gaze_based\images\S01\S01error\',name,'.png');
    print(i,'-dpng',name);
end

%正确信号的叠加平均
S01_correct(61,180)=0;%预定义信号及信号长度
m=0;
for n=1:500
    if  S01labels(1,n)==1
        m=m+1;%计数,最后要平均的,另外也便于分类
        for i=1:61
            for j=1:180
                S01_correct(i,j)=(S01_correct(i,j)+S01eeg(n,i,j))/m;
            end
        end
    end
end
correctcount = m
for i=1:61
    n=i;
    j=i+61;
    figure(j);
    plot(1:180,S01_correct(i,:));
    set(j,'visible','off');%设置不打开图像窗口
    name = num2str(n);
    name = strcat('D:\RESEARCH\CODE\errn from gaze_based\images\S01\S01correct\',name,'.png');
    print(j,'-dpng',name);
end

%正确和错误信号在一张图上
for i=1:61
    n=i;
    k=i+122;
    figure(k);
    plot(1:180,S01_error(i,:),'r',1:180,S01_correct(i,:));
    set(k,'visible','off');%设置不打开图像窗口
    name = num2str(n);
    name = strcat('D:\RESEARCH\CODE\errn from gaze_based\images\S01\error&correct\',name,'.png');
    print(k,'-dpng',name);
end

图像生成之后,就可以在本地进行查看了。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!