| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 人工智能 -> 模式识别实验《信号检测实验》 -> 正文阅读 |
|
|
[人工智能]模式识别实验《信号检测实验》 |
|
应该会有部分学计算机orAI专业的大学生会遇到这门课程第一个实验《信号检测实验》,可能会有人对这个题目无从下手,在这里我给出一种基于matlab的解决办法。 一.参数设置1.? 1所占比率为rate,0所占即为1-rate; 2.所判断信号长度为len; 3.width为需要将单个序列信号展宽的宽度,后边题目中会解释。 二.所检测信号图像1.随机脉冲信号; | |||||||||||||
| 状态 | |||
| 阳性 | 阴性 | ||
| 决策 | 阳性 | 真阳性(TP) | 假阳性(FP) |
| 阴性 | 假阴性(FN) | 真阴性(TN) | |
2.灵敏度
Sn=TP/TP+FN
3.假阳性率
α=1?Sp=FP/TN+FP
4.ROC曲线

function Pn=Proc_0_1_Pulse(width, rate, len)
A=rand(len,1);
for i=1:len
if A(i)<1-rate
A(i)=0;
elseif A(i)>=rate
A(i)=1;
end
end
Pn=rand(len*width,1);
for j=1:len
for iters=1:width
Pn((j-1)*width+iters)=A(j);
end
end
function L=Change_One(a,width,len)
m=a;
L=zeros(len,1);
for i=1:len
t=0;
for j=1:width
t=t+m((i-1)*width+j);
end
L(i)=t/width;
end
% ?predict ? ? ? - 分类器对测试集的分类结果
% ?ground_truth - 测试集的正确标签,这里只考虑二分类,即0和1
% ?auc ? ? ? ? ? ?- 返回ROC曲线的曲线下的面积
function auc = plot_roc( predict, ground_truth )
%初始点为(1.0, 1.0)
%计算出ground_truth中正样本的数目pos_num和负样本的数目neg_num
pos_num = sum(ground_truth==1);
neg_num = sum(ground_truth==0);
m=size(ground_truth,1);
[pre,Index]=sort(predict);
ground_truth=ground_truth(Index);
x=zeros(m+1,1);
y=zeros(m+1,1);
auc=0;
x(1)=1;y(1)=1;
for i=2:m
TP=sum(ground_truth(i:m)==1);FP=sum(ground_truth(i:m)==0);
x(i)=FP/neg_num;
y(i)=TP/pos_num;
auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;
end
x(m+1)=0;y(m+1)=0;
auc=auc+y(m)*x(m)/2;
plot(x,y);%画出ROC曲线
disp(auc);%得到曲线下面积
end
%%
%参数
rate=0.7;%0,1比率
len=10000;%序列长度
width=5;%单个宽度
%%
%序列生成
s=Proc_0_1_Pulse(width,rate,len);
n=normrnd(0,1,width*len,1);
x=s+n;
series=Change_One(x,width,len);
%%
%判别函数
pw1=rate;
pw2=1-rate;
predict=zeros(len,1);
ground_truth=Change_One(s,width,len);
for i=1:len
pxw1=1/sqrt(2*pi)*exp((-1/2)*(series(i)-1)^2);
pxw2=1/sqrt(2*pi)*exp((-1/2)*series(i)^2);
predict(i)=pw1*pxw1/(pw2*pxw2);
end
%%
%ROC曲线及auc面积
answer=plot_roc(predict,ground_truth);
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 6:41:03- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |