Scramble the positions of a cell array
1 view (last 30 days)
Show older comments
Abirami
on 21 Aug 2014
Answered: Azzi Abdelmalek
on 21 Aug 2014
I have two cell array as follows
Z= (2,5) (2,3) (2,1) (2,2) (2,4)
(4,5) (4,3) (4,1) (4,2) (4,4)
(5,5) (5,3) (5,1) (5,2) (5,4)
(3,5) (3,3) (3,1) (3,2) (3,4)
(1,5) (1,3) (1,1) (1,2) (1,4)
W= 'ATGC' 'ACTG' 'AGCT' 'AATT' 'TATG'
'GCTA' 'GACT' 'TACG' 'TGAT' 'ATAT'
'TCGG' 'CATA' 'TAAT' 'TTTT' 'CTGC'
'AAGT' 'AAGG' 'TGGG' 'TGTA' 'CAAA'
'GTGG' 'CTCT' 'GATT' 'CGTG' 'CTGG'
Now i have a big problem....i need to create a new cell array 'G' where the value of W should be placed accprding to the positions given in Z.
For eg: the value ATGC (ie;the first element of W) should be placed at (2,5) of 'G'. Both the cell arrays are just examples...i need to do it for a 256*256 array. Please help.Thanks in advance
0 Comments
Accepted Answer
Azzi Abdelmalek
on 21 Aug 2014
Z= {[2,5] [2,3] [2,1] [2,2] [2,4]
[4,5] [4,3] [4,1] [4,2] [4,4]
[5,5] [5,3] [5,1] [5,2] [5,4]
[3,5] [3,3] [3,1] [3,2] [3,4]
[1,5] [1,3] [1,1] [1,2] [1,4]}
W={ 'ATGC' 'ACTG' 'AGCT' 'AATT' 'TATG'
'GCTA' 'GACT' 'TACG' 'TGAT' 'ATAT'
'TCGG' 'CATA' 'TAAT' 'TTTT' 'CTGC'
'AAGT' 'AAGG' 'TGGG' 'TGTA' 'CAAA'
'GTGG' 'CTCT' 'GATT' 'CGTG' 'CTGG'}
out=cellfun(@(x) W{x(1),x(2)},Z,'un',0)
0 Comments
More Answers (1)
Michael Haderlein
on 21 Aug 2014
Dear Abirami,
one possibility:
ind=cellfun(@(x) sub2ind(size(Z),x(1),x(2)),Z);
[~,s]=sort(ind(:));
G=reshape(W(s),size(Z));
Best regards,
Michael
0 Comments
See Also
Categories
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!