在一个histc
中,我有纬度数据。在另一个histc
中,我有经度数据。我已经分别绘制了这两个图的bar
图。现在,我想组合它们并生成一个3D图形,其中x轴是纬度,y轴是经度,z轴是每个纬度 - 经度对出现的频率。
问题在于,在分别绘制纬度和经度的图表时,我分别通过单独的histc
来计算各自的频率。但是,当我想让它成为3D情节时,我似乎找不到一种方法来获取纬度 - 经度对的histc
。
编辑:我正在添加我的代码,用于在一位评论者要求的情况下绘制条形图,但我不知道这会有什么帮助。纬度条形图为:bar(unique(M), histc(M,unique(M)))
,经度为bar(unique(N), histc(N,unique(N)))
。并且M和N是nx1矩阵。 (实际上,它们是一个更大矩阵的2列。但为了简单起见,我避免在这里编写复杂的公式。)
编辑:我认为我正在寻找的可能是通过曲面图surf
来解决的。但我不确定。如果是,那么我所面临的问题(以surf
发言)可以说是定义Z
参数的问题。
答案 0 :(得分:1)
latitudes=180*(rand(1,10000)-0.5);
longitudes=360*(rand(1,10000)-0.5);
d=[latitudes;longitudes];
minVal_Lat=-90;
maxVal_Lat=90;
minVal_Long=-180;
maxVal_Long=180;
delta=10;
axisLat=minVal_Lat:delta:maxVal_Lat;
axisLong=minVal_Long:delta:maxVal_Long;
nPDF_Lat=length(axisLat);
nPDF_Long=length(axisLong);
PDF=zeros(nPDF_Lat,nPDF_Long);
temp=0;
count_i=1;
count_j=1;
for i=axisLat;
lowlimit_x=i-delta/2;
upperlimit_x =i+delta/2;
for j=axisLong;
lowlimit_y=j-delta/2;
upperlimit_y =j+delta/2;
temp=0;
for k=1:length(d(1,:));
if lowlimit_x<=d(1,k) & d(1,k)<upperlimit_x
if lowlimit_y<=d(2,k) & d(2,k)<upperlimit_y
temp=temp+1;
else
end
else
end
end
PDF(count_i,count_j)=temp;
count_j=count_j+1;
end
count_i=count_i+1;
count_j=1;
end
normFactor=sum(sum(PDF));
PDF=(1/normFactor)*PDF;
randVar_Lat=minVal_Lat:delta:maxVal_Lat;
randVar_Long=minVal_Long:delta:maxVal_Long;
surf(randVar_Lat,randVar_Long,PDF')
如果你想获得带有冲浪图的二维概率密度函数,这些代码就可以了。