作业帮 > 综合 > 作业

matlab如何画联合分布图

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 16:04:06
matlab如何画联合分布图
分别有两列数据 一列是幅值、另一列是时间 我想利用联合分布图画出幅值与时间的关系,最好是 类似于下图

悬赏10个财富 成功后我会追加  谢谢!
问题表示还是要说清楚一点,列两数据是化不出三维图的
你举例的图,起码有三种,横坐标,纵坐标,还有一种是以颜色来表示值的大小
如果是要画分布图,那么需要对你原来的数据作统计,
以统计的数量作为第三种数据,才能画出那样的图.
假设你原来的两列数据分别为t和x,
[N C]=hist3([t(:) x(:)],[10 10]);
N=N';
imagesc(C{1},C{2},N);
colormap(jet);
就会画出如上的分布图,这里将原来的t和x各分为10个区间,总共分成把t,x平面分成100个区域
C{1}是每个t区间的中间值,C{2}是每个x区间的中间值,N是10x10的矩阵,记录每个区间的统计个数
如果觉得分的区间太小,可以用更大的数值填到10的位置
或者[20 30]那样,把t和x分成不同的区间
再问: 谢谢您 我用的20  画出来的图是这样的两幅图确实不大一样   请问我怎样统计能画出跟上面图类似的效果 

再答: 你原来的数据量太少了,统计出来的图肯定没有那么好看 网格分得太密,那么每隔的统计数字很少,图不好看 网格分得太梳,那么每隔就很大,图像就像马赛克,像你的图,也不好看 根本解决的办法还是需要更多的数据来统计 不过有个自欺欺人的办法,用插值的办法让图像好看一点,没有那么多马赛克 [N C]=hist3([t(:) x(:)],[20 20]); N=N'; NN=imresize(N,4);%将图像扩大4倍,中间像素插值 imagesc(C{1},C{2},NN); colormap(jet); 将图像扩大,原来是20x20的,扩大4倍后就是80x80, 多出来的原来没有的像素,会自动用附近像素的值插值 那么图片看上去就漂亮很多,没有那么大的马赛克 如果嫌还是不够,可以放大更大的倍数 但是正真的数据还是只有20x20,其他插值出来的数据只是让图好看一点,不是真实的 如果的有大量的数据,那么完全可以在统计的时候就用[80 80]或更密的网格, 只要数据够多,图就好看,那样的统计才是真实的