matlab中方差直方图,matlab画二维数据直方图/画二维概率分布

数据来自混合高斯分布

![](http://www.forkosh.com/mathtex.cgi? \large Y=0.3X_1+0.6X_2+0.1X_3)

随机变量的均值如下, 各分量之间相互独立, 方差100

mu1=[-55,0,90];s1=100*eye(3,3);

mu2=[-30,-10,70];s2=s1;

mu3=[-20,20,150];s3=s1;

产生10,000个独立随机变量, 画出 X-Y Y-Z Z-X 的二维直方图

a575e53bcaa9?tdsourcetag=s_pctim_aiomsg

[X-Y] 分量的频率统计图

hist3 函数画直方图, set指令上色

hist3([reshape(data{i},[],1),reshape(data{i+1},[],1)],'nbins',[20 20])

set(gcf,'renderer','opengl');

set(get(gca,'child'),'FaceColor','interp','CDataMode','auto');

pcolor(xb,yb,n1) 在网格 (xb,yb) 中根据n1取值填充颜色 ; h.ZData一行目的把二维网格图下移,以便观察

h = pcolor(xb,yb,n1);

h.ZData = ones(size(n1)) * -max(max(n));

选择色调

colormap(jet) % heat map %hot

view(3)可以改成view(2), 只显示在X-Y平面的投影

a575e53bcaa9?tdsourcetag=s_pctim_aiomsg

view(2):X-Y平面

为了在X-Y平面投影出更精细直观的分布图, 使用contourf函数

a575e53bcaa9?tdsourcetag=s_pctim_aiomsg

X-Y 等值分布

源程序如下:

clc;clear;close all;

% define number of observation

N=10000;

%example: Gaussian Mixture distribution

% specify multi-dimensional probability distribution

%[X Y Z] are independent for variance matrix is diagonal

mu1=[-55,0,90];s1=100*eye(3,3);

mu2=[-30,-10,70];s2=s1;

mu3=[-20,20,150];s3=s1;

% weight

p=[0.3 0.6 1];

XX=zeros(N,1);

YY=XX;

ZZ=XX;

dq=zeros(1,N);

for i=1:N

%random variable generator

dp=rand();

if dp

r=mvnrnd(mu1,s1);

dq(i)=1;

else if dp >p(2)

r=mvnrnd(mu3,s3);

dq(i)=2;

else

r=mvnrnd(mu2,s2);

dq(i)=3;

end

end

XX(i)=r(1);

YY(i)=r(2);

ZZ(i)=r(3);

end

% visualize probability density on X-Y Y-Z Z-X panel

data{1}=XX;

data{2}=YY;

data{3}=ZZ;

data{4}=XX;

bins=[20 20];

for i=1:3

figure(i)

hist3([reshape(data{i},[],1),reshape(data{i+1},[],1)],'nbins',[20 20])

set(gcf,'renderer','opengl');

set(get(gca,'child'),'FaceColor','interp','CDataMode','auto');

hold on

dat=[reshape(data{i},[],1),reshape(data{i+1},[],1)];

n = hist3(dat,'nbins',[20 20]); % default is to 10x10 bins

n1 = n';

n1(size(n,1) + 1, size(n,2) + 1) = 0;

% Generate grid for 2-D projected view of intensities.

xb = linspace(min(dat(:,1)),max(dat(:,1)),size(n,1)+1);

yb = linspace(min(dat(:,2)),max(dat(:,2)),size(n,1)+1);

% Make a pseudocolor plot.

h = pcolor(xb,yb,n1);

h.ZData = ones(size(n1)) * -max(max(n));

colormap(jet) % heat map %hot

grid on

colorbar

view(3);

figure(i+10)

n = hist3([reshape(data{i},[],1),reshape(data{i+1},[],1)],'nbins',[50 50]); % default is to 10x10 bins

n1 = n';

n1(size(n,1) + 1, size(n,2) + 1) = 0;

xb = linspace(min(dat(:,1)),max(dat(:,1)),size(n,1)+1);

yb = linspace(min(dat(:,2)),max(dat(:,2)),size(n,1)+1);

[XXX,YYY]=meshgrid(xb,yb);

contourf(XXX,YYY,n1)

colormap('jet')%autumn

grid

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值