matlab 二维直方图,在matlab中快速二维直方图

这是我的2D直方图版本:

%# some random data

X = randn(2500,1);

Y = randn(2500,1)*2;

%# bin centers (integers)

xbins = floor(min(X)):1:ceil(max(X));

ybins = floor(min(Y)):1:ceil(max(Y));

xNumBins = numel(xbins); yNumBins = numel(ybins);

%# map X/Y values to bin indices

Xi = round( interp1(xbins, 1:xNumBins, X, 'linear', 'extrap') );

Yi = round( interp1(ybins, 1:yNumBins, Y, 'linear', 'extrap') );

%# limit indices to the range [1,numBins]

Xi = max( min(Xi,xNumBins), 1);

Yi = max( min(Yi,yNumBins), 1);

%# count number of elements in each bin

H = accumarray([Yi(:) Xi(:)], 1, [yNumBins xNumBins]);

%# plot 2D histogram

imagesc(xbins, ybins, H), axis on %# axis image

colormap hot; colorbar

hold on, plot(X, Y, 'b.', 'MarkerSize',1), hold off

请注意,我删除了“非负”限制,但保留了整数bin中心(这可以很容易地更改为划分范围到相同大小的指定数量的bin而不是“fractions”).

这主要受到@SteveEddins blog post的启发.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值