How do I convert a frequency table to a single vector?

4 views (last 30 days)
Aaron Goodman
Aaron Goodman on 19 Jan 2022
Commented: Aaron Goodman on 19 Jan 2022
I have the following frequecy table where Column 1 is a parameter I am measuring, and column 2 is the number of times that parameter occurred:
I would like to convert this to a single vector:
x = [3 4 4 4 4 4 4 4 4 6 23]
so I can perform statistical tests on the data. Does anyone have a simple solution?
Thank you!

Accepted Answer

_
_ on 19 Jan 2022
First, setting up the variable as you have it:
Blank2 = zeros(23,2);
Blank2(:,1) = 1:23;
Blank2(3,2) = 1;
Blank2(4,2) = 8;
Blank2(6,2) = 1;
Blank2(23,2) = 1;
display(Blank2);
Blank2 = 23×2
1 0 2 0 3 1 4 8 5 0 6 1 7 0 8 0 9 0 10 0
One way is to use arrayfun() to operate on the elements of each column:
x = arrayfun(@(x,y)x*ones(1,y),Blank2(:,1),Blank2(:,2),'UniformOutput',false);
x = [x{:}];
display(x);
x = 1×11
3 4 4 4 4 4 4 4 4 6 23
Another equivalent way using a for loop:
x = [];
for i = 1:size(Blank2,1)
x = [x Blank2(i,1)*ones(1,Blank2(i,2))];
end
display(x);
x = 1×11
3 4 4 4 4 4 4 4 4 6 23

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!