Reshaping a matrix and binding two values together
Show older comments
Hello dear Matlab Community!
Since I am a total novice in Matlab I'm stuck with the following, probably easily solvable, problem.
I have a matrix in the following arrangement:
20 9
12 4
3 15
6 7
. .
. .
and so forth, the integers of each column reach from 1 to 20 and are paired with an integer from the other column. The same integers cannot be paired, so for example 14 14 would be impossible.
I want to present randomized pairings of stimuli.
So, firstly I need to rearrange my two columns to this from: 20 9 12 4 3 15 6 7...
Does anybody know how to do this?
And secondly, I want to bind every 2 integers and then shuffle them. For example, 20 and 9 are bound, 12 and 4 are bound, 3 and 15 are bound and so forth. And then shuffle them, so a new arrangement might be: 12 4 20 9 3 15...
I would very much appreciate any help!
Thanks in advance and best Regards!
Answers (1)
KSSV
on 28 Jul 2020
iwant = reshape(randperm(20),10,2) ;
8 Comments
Rupert Steinmeier
on 28 Jul 2020
Edited: Rupert Steinmeier
on 28 Jul 2020
KSSV
on 28 Jul 2020
If A is your m*2 matrix
A = A' ;
iwant = A(:)'
Is this what you want?
Rupert Steinmeier
on 28 Jul 2020
My first answer helps for this.
A = rand(10,2) ;
A = A' ;
A = A(:)' ;
idx = reshape(randperm(length(A)),10,2) ;
A = A(idx)
Rupert Steinmeier
on 28 Jul 2020
KSSV
on 28 Jul 2020
idx = reshape(randperm(length(A)),[],2) ;
It seems you have more than 20 elements....
Rupert Steinmeier
on 28 Jul 2020
KSSV
on 28 Jul 2020
Read about randperm.
Categories
Find more on Creating and Concatenating Matrices 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!