# Take the product of two probability density function histograms generated from data

38 views (last 30 days)

Show older comments

David Gillcrist
on 21 Sep 2023

Edited: William Rose
on 21 Sep 2023

##### 0 Comments

### Accepted Answer

William Rose
on 21 Sep 2023

Edited: William Rose
on 21 Sep 2023

Since you did not provide data, let's create some.

x1=rand(10000,1)+rand(10000,1); % pdf(x1) = triangle from 0 to 2 with peak at 1

x2=0.8+0.4*randn(10000,1); % normal with mu=0.8, sigma=0.4.

x2=x2(x2>=0 & x2<=2); % discard x2 values <0 and >2

Compute the histograms.

bw=0.1;

h1=histogram(x1,'Normalization','pdf','BinWidth',bw);

figure

h2=histogram(x2,'Normalization','pdf','BinWidth',bw);

Multiply the histograms.

joint=h1.Values.*h2.Values; % bin-by-bin product

Plot result

bar(0.05:bw:1.95,joint,1)

How is that? Note that joint is not a PDF since the area under the curve is not 1. If you want joint to be a pdf, multiply it by the appropriate normmalization factor.

##### 1 Comment

William Rose
on 21 Sep 2023

To make vector joint be a pdf, do

joint=joint/(sum(joint)*bw);

Check that the area under the curve of joint is unity:

disp(sum(joint)*bw)

Good luck.

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!