Combine vectors of different length into a matrix and perform ANOVA.

7 views (last 30 days)
Hello,
I have 20 vertical vectors all of different lenghts.
a = 1x876;
b = 1x900;
c = 1x852;
...
y = 1x798;
I'd like to merge them into a single matrix in which each column is one vector (n x 20) and then perform an ANOVA.
Unfortunately a cannot combine vectors of different lenght in one matrix. Is there a way to fill in the empty spaces with a NaN value (probably taking the lenght of the longest one)?
Or maybe there are other methods of which I have no knowledge to perform an ANOVA listing all the variable to be taken into account?
Thank you!

Accepted Answer

Adam Danz
Adam Danz on 18 Jan 2021
Edited: Adam Danz on 18 Jan 2021
The dimensions you provided indicate that the vectors are row vectors, not column vectors.
If you're performing a 1-ways ANOVA using anova1, you don't have to create a matrix. Use the grouping variable instead. For row vectors,
y = [a,b,c,d];
group = repelem(1:4, 1, [numel(a),numel(b),numel(c),numel(d)])
To answer your original question, pad arrays using B = padarray(A,padsize).
  4 Comments
Adam Danz
Adam Danz on 18 Jan 2021
Edited: Adam Danz on 18 Jan 2021
The error is because you forgot the square brackets that group the second input.
repelem(A, N1, N2, ..., Nn)
should probably be
repelem(A, [N1, N2, ..., Nn])
assuming row vector inputs.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!