士郎小天使 2021-10-22 02:46 采纳率: 81.1%
浏览 193
已结题

matlab中,有一组二维数据,如何绘制三维的联合经验分布函数图

如果是一维数据X,就能直接用[f,x] = ecdf(X)来绘制经验分布函数图,但如果是二维的数据数据[X,Y],要如何绘制二维数据的三维联合经验分布函数图。最开始我是直接分别算ecdf 得到两个f和x,y。结果的x,y做X轴Y轴的值,两个f相乘做Z轴。代码如下,绘制的图比较相近。
但是我问了下导师,我这种求法前提是X和Y是相互独立的。我的数据[X Y]中的X和Y不是独立的,不能简单地分别用ecdf来求然后概率相乘。想问下大神们,一组二维数据,要如何绘制三维的联合经验分布函数图

Z=xlsread('Linton3.xlsx')
X=Z(:,1);
Y=Z(:,2);
[f1,x] = ecdf(X);
[f2,y] = ecdf(Y);
[XX,YY]=meshgrid(x,y);
[ff1,ff2]=meshgrid(f1,f2);
ZZ=ff1.*ff2
surf(XX,YY,ZZ,'EdgeColor','none');

img

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-22 17:16
    关注

    你好同学,给你编了一个专属函数ecdf2:

    function [X, Y, CDF] = ecdf2(x,y,nx,ny,xminmax,yminmax)
    % x:x的值
    % y:y的值
    % nx:x方向划分段数
    % ny:y方向划分段数
    % xminmax = [xmin, xmax]
    % yminmax = [ymin, ymax]
    num = length(x);
    if(num~=length(y))
       error('输入的x和y长度必须相等') 
    end
    if(nargin>6) % 如果变量个数大于6个,太多了
        error('太多输入变量')
    elseif(nargin<2) % 如果变量个数小于2个,太少了
        error('输入变量数目不足!!')
    end
    if(nargin==6) % 如果变量个数等于6个,赋值给ymin和ymax
        ymin = yminmax(1);
        ymax = yminmax(2);
    end
    if(nargin>=5)% 如果变量个数大于等于5个,赋值给xmin和xmax
        xmin = xminmax(1);
        xmax = xminmax(2);
    end
    if(nargin<=4)% 如果变量个数小于等于4个,自定义xmin和xmax
        xmin = min(x);
        xmax = max(x)+eps;
        ymin = min(y);
        ymax = max(y)+eps;
    end
    if(nargin<=3)% 如果变量个数小于等于3个,自定义y方向划分段数ny
        ny = 30;
    end
    if(nargin==2)% 如果变量个数等于2个,自定义x方向划分段数nx
        nx = 30;
    end
    xg = linspace(xmin, xmax, nx);%x方向的点
    yg = linspace(ymin, ymax, ny);%y方向的点
    [X,Y] = meshgrid(xg, yg);%形成网格
    [I,J] = meshgrid(1:nx, 1:ny);%下标网格
    CDF = arrayfun(@(i,j)sum(x<X(i,j)&y<Y(i,j))/num,I,J);%形成经验分布
    end
    

    然后调用就行:

    clc;clear
    num = 1000000;
    x = randn(num,1);% 为了说明弄了两个正态分布搞联合,实际数据会更好
    y = randn(num,1);
    [X, Y, CDF] = ecdf2(x,y);% ,50,50,[-3, 3],[-3, 3]
    surf(X,Y,CDF)
    

    可以看到效果杠杠的:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 已采纳回答 10月23日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c