IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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.随机脉冲信号;

?

?

?2.噪声信号

3.叠加噪声后的信号

三.判决方法:基于最小错误率贝叶斯决策(MAP)?

?1.判决函数:最大后验概率

?x\in max(P(wi|x))

?由于P(x)相等,所以公式简化为:x\in max(P(wi)P(x|wi))

?p(x│ω_1)=1/√2πexp^?(n?1)^2/2

?p(x│ω_2)=1/√2πexp^?n^2/2

predict(x)=p(w1)p(x|w1)/p(w2)p(x|w2)

predict(x)大于1,则x属w1;小于1,则x属于w2

四.ROC曲线绘制

1.

状态

阳性

阴性

决策

阳性

真阳性(TP)

假阳性(FP)

阴性

假阴性(FN)

真阴性(TN)

2.灵敏度

Sn=TP/TP+FN

3.假阳性率

α=1?Sp=FP/TN+FP

4.ROC曲线

五.matlab代码

?1.生成0_1序列的函数

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

?2.序列展宽后缩回原来长度函数

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   

3.ROC曲线函数

% ?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

4.主函数

%%
%参数
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);

六.批注:打开所有函数后,只运行主函数即可

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 11:56:30  更:2021-09-30 11:57:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 19:34:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码