[英]In MATLAB, how can I combine 2 different `histc` results into one, and produce a 3D plot?
在一個histc
,我有緯度數據。 在另一個histc
,我有經度數據。 我已經分別繪制了這兩個的bar
。 現在,我想將它們組合起來,生成一個3D圖,其中x軸是緯度,y軸是經度,z軸是每個緯度-經度對出現的頻率。
問題是,當分別繪制緯度和經度圖時,我通過分別獲取各自的histc
來計算其各自的頻率。 然而,當我想使它成為一個三維圖,我似乎無法找到一種方法,采取histc
經緯度對。
編輯:我正在添加我的代碼,以便在一個評論者要求下在此處繪制條形圖,盡管我不知道這樣做會有什么幫助。 緯度的條形圖是: bar(unique(M), histc(M,unique(M)))
,經度的bar(unique(N), histc(N,unique(N)))
是bar(unique(N), histc(N,unique(N)))
。 M和N是nx1矩陣。 (實際上,它們是一個更大的矩陣的2列。但是為了易於理解,我在這里避免編寫復雜的公式。)
編輯:我認為我要尋找的東西可能會通過曲面圖, surf
解決。 但我不確定。 如果是這樣,那么就surf
而言,我面臨的問題可以說是定義Z
參數的問題。
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')
如果要獲得帶有沖浪圖的2D概率密度函數,則可以使用這些代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.