声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1315|回复: 6

[编程技巧] 问个Hist的问题

[复制链接]
发表于 2009-3-8 01:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
有两列数据,如:
x:  0.01, 0.02, 0.03, 0.04, 0.05 ......

y:   0, 5, 3, 6, 0......

用Matlab可以很容易画出图 (plot(x,y)).
现在, 我想改变x 的bin scale (比如增加10倍), 然后再画图,不知道如何用matlab 实现。

新的 X: 0.1, 0.2, 0.3,0.4, 0.5......

新的Y应是原来的y 在新的bin scale 下的,应该如何实现呢? 谢谢!!
回复
分享到:

使用道具 举报

发表于 2009-3-8 08:45 | 显示全部楼层

  1. plot(x,10*y)
复制代码
是这个意思吗?
 楼主| 发表于 2009-3-8 11:05 | 显示全部楼层
Thanks!

不是这样的。 我的意思是: 如果x 的scale 增加10倍,新的X对应的y 值应该是新的bin (这个例子是0.1)之间所有旧的y 的加和。
发表于 2009-3-8 12:38 | 显示全部楼层
感觉x,y应该即是原始数据yy的hist分布, 即y=hist(yy,x)
所以为何不用原始数据yy重新分布即可!?
 楼主| 发表于 2009-3-8 12:48 | 显示全部楼层
谢谢Chaching! 是的。我目前在查看一组很老的数据,要是有最初的数据,我重新hist 就行了。但现在没有原始数据,我手头上有的是用较小的bin step hist 之后的数据,所以我必须在这个基础上加大bin step。望赐教!
发表于 2009-3-8 16:29 | 显示全部楼层
找了下相关函数, 尚未找到现成的函数! 硬干吧, 使用for循环试试看
x=0.01:0.01:1; y=1:100; xx=0.1:0.1:1; % depend on your data
bound=[x(1)-0.01, (xx(1:end-1)+xx(2:end))/2, x(end)+0.01];
for ii=1:length(bound)-1
  yy(ii)=sum( y( find(x>bound(ii) & x<=bound(ii+1)) ) );
end
 楼主| 发表于 2009-3-8 23:55 | 显示全部楼层
谢谢!!学习了!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 04:22 , Processed in 0.066694 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表