matlab练习程序(正态分布贝叶斯分类)

clear all;
close all;
clc;

randn(‘seed‘,0);
mu1=[0 0];
S1=[0.3 0;0 0.35];
cls1_data=mvnrnd(mu1,S1,1000);
plot(cls1_data(:,1),cls1_data(:,2),‘+‘);
hold on;

mu2=[4 0];
S2=[1.2 0;0 1.85];
cls2_data=mvnrnd(mu2,S2,1000);
plot(cls2_data(:,1),cls2_data(:,2),‘r+‘);
axis([-8 8 -8 8]);

for i=-4:0.1:8
for j=-6:0.1:6
d1=([i,j]-mu1)*inv(S1)*([i,j]-mu1)‘;
d2=([i,j]-mu2)*inv(S2)*([i,j]-mu2)‘;
d=d1-d2;
if d<0.1
plot(i,j);
end

end
end
grid on;

figure;
mu1=[0 0];
S1=[0.1 0;0 0.75];
cls1_data=mvnrnd(mu1,S1,1000);
plot(cls1_data(:,1),cls1_data(:,2),‘+‘);
hold on;

mu2=[3.2 0];
S2=[0.75 0;0 0.1];
cls2_data=mvnrnd(mu2,S2,1000);
plot(cls2_data(:,1),cls2_data(:,2),‘r+‘);
axis([-8 8 -8 8]);

for i=-8:0.1:8
for j=-8:0.1:8
d1=([i,j]-mu1)*inv(S1)*([i,j]-mu1)‘;
d2=([i,j]-mu2)*inv(S2)*([i,j]-mu2)‘;
d=d1-d2;
if d<0.1
plot(i,j);
end

end
end
grid on;

figure;
mu1=[0 3];
S1=[0.3 0;0 0.35];
cls1_data=mvnrnd(mu1,S1,1000);
plot(cls1_data(:,1),cls1_data(:,2),‘+‘);
hold on;

mu2=[4 0];
S2=[0.3 0;0 0.35];
cls2_data=mvnrnd(mu2,S2,1000);
plot(cls2_data(:,1),cls2_data(:,2),‘r+‘);

axis([-8 8 -8 8]);

for i=-8:0.1:8
for j=-8:0.1:8
d1=([i,j]-mu1)*inv(S1)*([i,j]-mu1)‘;
d2=([i,j]-mu2)*inv(S2)*([i,j]-mu2)‘;
d=d1-d2;
if d<0.1
plot(i,j);
end

end
end
grid on;

figure;
mu1=[0 -3];
S1=[0.5 1;1 2.5];
cls1_data=mvnrnd(mu1,S1,1000);
plot(cls1_data(:,1),cls1_data(:,2),‘+‘);
hold on;

mu2=[4 0];
S2=[0.5 1;1 2.5];
cls2_data=mvnrnd(mu2,S2,1000);
plot(cls2_data(:,1),cls2_data(:,2),‘r+‘);

axis([-8 8 -8 8]);

for i=-8:0.1:8
for j=-8:0.1:8
d1=([i,j]-mu1)*inv(S1)*([i,j]-mu1)‘;
d2=([i,j]-mu2)*inv(S2)*([i,j]-mu2)‘;
d=d1-d2;
if d<0.1
plot(i,j);
end

end
end
grid on;

时间: 2024-08-10 02:10:55

matlab练习程序(正态分布贝叶斯分类)的相关文章

matlab练习程序(生成黑白网格)

提供了两种生成方法,一个是自己编程实现,比较灵活:另一个是调用系统的checkerboard函数,似乎只能生成8*8网格. 至于用途,也许可以用来下国际象棋. 自己函数生成: 系统函数生成: 代码如下: clear all;close all;clc h=256; w=256; n=8; img=zeros(h,w); flag=1; for y=1:h for x=1:w if flag>0 img(y,x)=255; end if mod(x,int8(w/n))==0 flag=-flag

matlab练习程序(旋转、径向模糊)

还记得过去写过径向模糊,不过当时效果似乎不好. 这次效果还可以,程序中用的算法是: 1.求当前处理点和图像中心点之间的距离r与角度ang; 2.通过对r的修改得到径向模糊. 3.通过对ang的修改得到旋转模糊. 一看代码就能全部明白,不仔细解释了. 原图如下: 处理后效果: matlab代码如下: clear all;close all;clc img=imread('lena.jpg'); [h w]=size(img); imshow(img) imgn=zeros(h,w); for y=

matlab练习程序(弧形投影)

这个其实也算是圆柱体投影了,不过上一篇文章是从正面看,得到的是凸形的结果,而这个是从反面看,得到的是凹形的结果. 计算公式就不写了,大致介绍一下,计算公式中关于x坐标求法和上篇一样,y坐标则正好是上篇公式的反变换,结合上篇公式代码和本篇的代码,应该都不是很难理解的. 下面是hfOV为pi/2时得到的变换结果: 原图: 处理后结果: matlab代码如下: clear all; close all;clc; img=imread('lena.jpg'); [h,w]=size(img); hfOV

(转)matlab练习程序(HOG方向梯度直方图)

matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram of Oriented Gradient)方向梯度直方图,主要用来提取图像特征,最常用的是结合svm进行行人检测. 算法流程图如下(这篇论文上的): 下面我再结合自己的程序,表述一遍吧: 1.对原图像gamma校正,img=sqrt(img); 2.求图像竖直边缘,水平边缘,边缘强度,边缘斜率. 3.

【转载】matlab练习程序(图像Haar小波变换)

matlab练习程序(图像Haar小波变换) 关于小波变换我只是有一个很朴素了理解.不过小波变换可以和傅里叶变换结合起来理解. 傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正余弦不同频率下的系数. 小波变换使用一系列的不同尺度的小波去分解原函数,变换后得到的是原函数在不同尺度小波下的系数. 不同的小波通过平移与尺度变换分解,平移是为了得到原函数的时间特性,尺度变换是为了得到原函数的频率特性. 小波变换步骤: 1.把小波w(t)和原函数f(t)的开始部分进行比较,计算

matlab练习程序(波纹扭曲)

其实就是用sin或cos对x,y坐标进行变换,处理的时候依然是反向变换. 类似的,用不同的函数能得到不同的扭曲效果,比如log,1/x,exp等等. 效果如下: 代码如下(还给出了如何生成gif图片的代码): clear all;close all;clc; img=imread('lena.jpg'); [h w]=size(img); wave=[10,100]; %[幅度,周期] newh=h+2*wave(1); neww=w+2*wave(1); rot=0; for i=1:10 i

matlab练习程序(圆柱投影)

圆柱投影就是将一张二维的图像投影到三维的圆柱体上,不过在显示图像的时候依然是以二维的形式给出. 投影最重要的步骤就是计算投影变换公式,和图像旋转类似,只要得到变换公式,再依照公式进行代码编写就很容易了. 这里就不写投影变换公式的推导过程了,直接给出变换公式.公式分为正变换和反变换,编程时,反变换公式通常更有用. 正变换公式如下: x'=f\cdot\arctan\left({\frac{x-\frac{W}{2}}{f}}\right)+f\cdot\arctan\left({\frac{W}{

matlab练习程序(毛玻璃模糊)

算是一种特效模糊方式吧,算法原理就是用邻域随机像素代替当前所处理的像素就可以了. 效果如下图所示: 原图: 处理后结果: matlab代码如下: clear all; close all;clc; img=imread('lena.jpg'); [h,w]=size(img); imgn=img; n=3; %模糊直径 for i=1:h for j=1:w offsetX=n*rand()-n/2; %邻域随机值代替当前像素 offsetY=n*rand()-n/2; y=floor(i+of

matlab练习程序(弧形、圆柱投影的复原)

前一段介绍了从矩形图像到圆柱的正向投影,看这里和这里.今天介绍如何从已经投影的图像反映射到原图像上. 本来此种变换一定是需要数学公式的,不过这里只是用了一个很简单的方式来完成反映射. 具体就把每一列有像素数据的长度拉伸到原图像的高就行了. 原图像是这样: 处理后: 看着感觉还可以,不过这样显然是不合数学公式的,和最原始的图比较一下就看出来差别了: matlab代码如下: clear all;close all;clc; img=imread('re.bmp'); [h w]=size(img);