⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getpoints.m

📁 MATLAB编写的误差反向传播(BP)神经网络简单分类器。
💻 M
字号:
%函数名称:GetPoints(Num,A,xp,phai,CrX,CrY)
%函数作用:建立正弦信号曲线作为理想分类面,在一定区域内随机生成指定个数的座标点
%         并给出原始分类信息,作为分类训练样本。
%函数参数:Num,A,xp,phai,CrX,CrY
%参数说明:Num:需要的坐标点数
%         A:正弦信号的幅值
%         xp:正弦信号的周期
%         phai:正弦信号的初相角
%         CrX:坐标点分布的水平范围(x=0/CrX)
%         CrY:坐标点分布的垂直范围(y=+/-CrY)
%函数输出:Points[]
%输出说明:Points[x,y,i]:坐标点(x,y),其分类为i,如果坐标点在
%         正弦信号上方,则i=1;如果在正弦信号下方,则i=0。
%         (实际上,为了满足BP网络输出的要求,i分别为0.95和0.05。)
%创建日期:2007.12.31
%最后更新日期:2007.12.31

function Points=GetPoints(Num,A,xp,phai,CrX,CrY);

    %生成随机坐标点数组(0-1之间),乘以2是为了后面取舍方便,防止点恰好出现在分类面上
    rndpoints=rand(2,Num*2);
    %将随机坐标点线性水平变换到(0,CrX)之间,垂直变换到(-Cr,Cr)之间
    rndpoints(1,:)=rndpoints(1,:)*CrX;
    rndpoints(2,:)=(rndpoints(2,:)-0.5)*CrY*2;
    %定义一个循环计数器
    counter=1;
    %为rndpoints定义一个移动指针
    rdp=1;
    %生成待输出的随机坐标点矩阵
    output=zeros(3,Num);
    
    %开始循环对随机坐标点进行分类
    while(counter<=Num)
        %如果坐标点恰好在分类面上,直接放弃,进入下一次循环
        if(rndpoints(2,rdp) == A * sin(2 * pi * rndpoints(1,rdp) / xp + phai))
            rdp=rdp+1;
            continue;
        end
        %如果坐标点在分类面上方,分类1,否则分类2
        if(rndpoints(2,rdp) > A * sin(2 * pi * rndpoints(1,rdp) / xp + phai))
            output(1,counter)=rndpoints(1,rdp);
            output(2,counter)=rndpoints(2,rdp);
            output(3,counter)=0.95;
        end
        if(rndpoints(2,rdp) < A * sin(2 * pi * rndpoints(1,rdp) / xp + phai))
            output(1,counter)=rndpoints(1,rdp);
            output(2,counter)=rndpoints(2,rdp);
            output(3,counter)=0.05;
        end
        %计数器加一
        rdp=rdp+1;
        counter=counter+1;
    end
    
    %输出生成好的已分类的坐标点列
    Points=output;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -