簡體   English   中英

在MATLAB中,如何將2個不同的“ histc”結果合並為一個,並生成3D圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM