# Creating 1D array from frequency data/histogram?

조회 수: 15(최근 30일)
Rose Lakatos 2018년 6월 15일
답변: Steven Lord 2018년 6월 27일
I’m trying to run an algorithm that requires a 1 dimensional data to work. My data is grey values from ct images describing the frequency of 8bit pixel values from 0-255. Is it possible to create an 1D array [0,1,2,3,4,5...255] with corresponding frequency of that pixel value?

댓글을 달려면 로그인하십시오.

### 답변(2개)

Steven Lord 2018년 6월 27일
If you want the resulting array to contain exactly n(1) copies of x(1), n(2) copies of x(2), etc. use the repelem function. [Depending on how you want to use the result, you may also want to "shuffle" it using randperm.]
x = 0:5;
freq = [2 3 4 5 6 7];
A = repelem(x, freq);
If instead of frequencies you have probabilities for what each element of the resulting array should be, use discretize.
p = freq./sum(freq);
cumulativeprob = [0 cumsum(p)];
B = discretize(rand(1, 1000), cumulativeprob, x);
Let's check that the proportions of elements in B come close to the probabilities in p.
c = histcounts(B, 'BinEdges', [x x(end)], 'Normalization', 'probability');
[c; p]
The values in c look reasonably close to the probabilities in p for just 1000 samples.
##### 댓글 수: 0표시 이전 댓글 수: -1숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Gayatri Menon 2018년 6월 27일
Hi,
Could you check out "histogram" command. Please refer to the below documentation to know more on this comment:
Hope this helps.
Gayatri

댓글을 달려면 로그인하십시오.

### 범주

Find more on Histograms in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!