楼主: 树袋熊2
4923 2

[问答] 如何对对一个二维数组做分段计数? [推广有奖]

  • 4关注
  • 4粉丝

博士生

3%

还不是VIP/贵宾

-

威望
0
论坛币
336 个
通用积分
3.8492
学术水平
11 点
热心指数
19 点
信用等级
8 点
经验
4585 点
帖子
135
精华
0
在线时间
243 小时
注册时间
2011-3-9
最后登录
2023-9-20

20论坛币
matlab小白求助~,对一维的向量有 histc(x,edges) 函数可以用,比如函数的例子:对标准正态分布分段计数:
  1. x = -2.9:0.1:2.9;
  2. y = randn(1000,1);
  3. n_elements = histc(y,x);
复制代码
如果对一个二维的向量,如 y1 = randn(1000,2); 划分的区间为x1 = -2.9:0.1:2.9; x2 = -2.9:0.1:2.9; 如何统计 y1 落在由x1,x2划分的区间块中的数量?


最佳答案

danielruc91 查看完整内容

我倒不知道有没有相关的函数,不过可以编一下: x1=-2.9:0.01:2.9; x2=x1; m=size(x1,1); n_elements=zeros(m+1); % preallocation for i1=1:m+1 for i2=1:m+1 if i1==1 ind1=y(:,1)x1(i1); else ind1=y(:,1)>=x1(i1-1) & y(:,1)=x2(i2-1) & y(:,2)
关键词:Elements Element 标准正态分布 MATLAB matla 正态分布 matlab 如何 统计

本帖被以下文库推荐

沙发
danielruc91 在职认证  发表于 2013-10-6 14:53:02 |只看作者 |坛友微信交流群
我倒不知道有没有相关的函数,不过可以编一下:

x1=-2.9:0.01:2.9;
x2=x1;
m=size(x1,1);
n_elements=zeros(m+1);       % preallocation

for i1=1:m+1
    for i2=1:m+1
          if i1==1
                ind1=y(:,1)<x1(i1);
          elseif i1==m+1
                ind1=y(:,1)>x1(i1);
          else
                ind1=y(:,1)>=x1(i1-1) & y(:,1)<x1(i1);
          end
          if i2==1
                ind2=y(:,2)<x2(i2);
          elseif i2==m+1
                ind2=y(:,2)>x2(i2);
          else
                ind2=y(:,2)>=x2(i2-1) & y(:,2)<x2(i2);
          end
          n_elements(i1,i2)=sum(ind1 & ind2);
    end
end

另外如果想看3维直方图的话,可以考虑hist3这个函数。。

使用道具

藤椅
树袋熊2 发表于 2013-10-7 14:46:17 |只看作者 |坛友微信交流群
danielruc91 发表于 2013-10-6 14:53
我倒不知道有没有相关的函数,不过可以编一下:

x1=-2.9:0.01:2.9;
谢谢!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 19:18