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

📄 pr_2.m

📁 模式识别中的非线性分类器
💻 M
字号:
close all
clear all
clc
A=[1,1;3,1;2,2;1,3;3,3];
B=[2,1;1,2;2,3;3,2];
plot(A(:,1),A(:,2),'r+',B(:,1),B(:,2),'bo','LineWidth',3);
legend('1号样本','2号样本');
grid on
hold on
t = 0:0.01:2*pi;
plot(sin(t)+2,cos(t)+2,'-m')
axis square
axis([0  4  0  4]);
title('原始样本分布图');
disp('1号样本输出结果:');
for i=1:size(A,1)
    x1 = A(i,1);
    x2 = A(i,2);
    disp(((x1-2)^2+(x2-2)^2-1)^2)
end
disp('2号样本输出结果:');
for i=1:size(B,1)
    x1 = B(i,1);
    x2 = B(i,2);
    disp(((x1-2)^2+(x2-2)^2-1)^2)
end
%测试随机数据,寻找最优判决门限
numA = 1000;
numB = 1000;
noise = [0.05,0.1,0.2];
err = zeros(0,0);
for noiseSeq = 1:length(noise)
    noiseVar = noise(noiseSeq);
    ASam = repmat(A,numA,1); 
	BSam = repmat(B,numB,1); 
	ASam=ASam+noiseVar*randn(size(ASam));
	BSam=BSam+noiseVar*randn(size(BSam));
	figure
	plot(ASam(:,1),ASam(:,2),'r+',BSam(:,1),BSam(:,2),'b*','LineWidth',1);
	legend('1号样本','2号样本');
	hold on
	t = 0:0.01:2*pi;
	plot(sin(t)+2,cos(t)+2,'--m','LineWidth',2)
	axis square
	axis([0  4  0  4]);
    if (noiseSeq == 1)
        title('轻微噪声下随机样本分布图');
    elseif (noiseSeq == 2)
        title('一般噪声下随机样本分布图');
    else
        title('较重噪声下随机样本分布图');
    end
	for i=1:size(ASam,1)
        x1 = ASam(i,1);
        x2 = ASam(i,2);
        XA(i) = ((x1-2)^2+(x2-2)^2-1)^2;
	end
	for i=1:size(BSam,1)
        x1 = BSam(i,1);
        x2 = BSam(i,2);
        XB(i) = ((x1-2)^2+(x2-2)^2-1)^2;
	end
	th = 0:0.01:1;
	for i=1:length(th)
        err(noiseSeq,i) = sum(XA<th(i))+sum(XB>th(i));
	end  
	err(noiseSeq,:) = err(noiseSeq,:)./(length(XA)+length(XB));
end
figure
plot(th,err(1,:),'r--',th,err(2,:),'b--',th,err(3,:),'m--');
legend('轻微噪声','一般噪声','较重噪声');
xlabel('判决门限值');
ylabel('误判率');
title('不同噪声条件下判决错误概率随门限分布图');
for i=1:size(err,1)
    disp('--------------')
    [minErr(i),minInd(i)] = min(err(i,:));
    disp('最小误判决比率')
    disp(minErr(i))
    minth(i) = th(minInd(i)); 
    disp('最小误判决对应门限')
    disp(minth(i))
end

%画出分类面图
for noiseSeq=1:length(minth)
    r1 = sqrt(1+sqrt(minth(noiseSeq)));
    r2 = sqrt(1-sqrt(minth(noiseSeq)));
    figure;
    plot(A(:,1),A(:,2),'r+',B(:,1),B(:,2),'bo','LineWidth',2);
    hold on
    legend('1号样本','2号样本');   
    t = 0:0.01:2*pi;
    plot(r1*sin(t)+2,r1*cos(t)+2,'-m','LineWidth',2)
    hold on
    plot(r2*sin(t)+2,r2*cos(t)+2,'-m','LineWidth',2)
    axis square
    if (noiseSeq == 1)
        title('轻微噪声下最优判决图');
    elseif (noiseSeq == 2)
        title('一般噪声下最优判决图');
    else
        title('较重噪声下最优判决图');
    end
    axis([0 4 0 4])
end

⌨️ 快捷键说明

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