1
我需要了解如何使我已經歸一化的數據的三維直方圖,所以下面的區域= 1。 我歸一化3d直方圖,使得曲線下的總和= 1在Matlab中
data=[data_x,data_y];
[HIST,Cent]=hist3(data];
我看了帖子在:
MatLab: Create 3D Histogram from sampled data
但還是老樣子我無法理解的方法。任何專家可以幫助解釋如何在Matlab中做到這一點?
編輯:
我用下面的代碼:
load('of.mat')
data=[single(theta(:)),mag(:)];
%define the x and y axis
edges{1} = -180:90:180;
edges{2} = 0:0.2:1;
hist3(data, 'Edges',edges);
[N,C] = hist3(data, 'Edges',edges);
x_diff = diff(edges{1});
y_diff = diff(edges{2});
x = repmat([x_diff, x_diff(end)], length(edges{2}),1)';
y = repmat([y_diff, y_diff(end)], length(edges{1}),1);
% volume of the histogram
V_tot = sum(sum(x.*y.*N));
N_norm = N/V_tot;
figure
% plot normalized histogram
bar3(-C{2}, N_norm');
axis normal
它運作良好,但我怎樣才能改變標準化直方圖軸抽動,其消極和我的數據應該是積極的。我的data_x介於-180和180(角度)之間,data_y介於0和1之間。我無法發佈圖像。
非常感謝你。我根據你的代碼編輯了這個問題。如何改變使用V_tot的抽動? – KaMu 2014-11-04 20:22:29
@KaMu我擴展了我的答案,關於如何更改刻度標籤。希望這可以幫助。我不清楚你如何得到負面價值,沒有你的數據(of.mat)很難弄清楚。也許您可以將圖片上傳到外部網站併發布鏈接。 – Arpi 2014-11-05 08:52:14
@KaMu如果您認爲我的答案已解決您的問題,請接受它,下次我也能發佈圖片。謝謝。 – Arpi 2014-11-05 18:57:17