📄 pr_2.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 + -