cells related

1 view (last 30 days)
KSSV on 12 Apr 2012
Closed: MATLAB Answer Bot on 20 Aug 2021
Hi all
I have 450 matrices of order 4X2. I am saving them in a cell on the name, say Vn. So size of Vn is 450X1. And size of each cell is 4X2. Now I want to run a loop and pick the elements randomly from Vn. For example I want to pick 1, 2, 3, 4 rows from the cells 1, 2, 31 , 32. I can access these elements in the way:
Vn{1}(1,:), Vn{2}(2,:), Vn{31}(3,:) etc. As I am running a loop and picking the values randomly, this kind of calling the rows may take long time for the code to run task. Is there any fast / best way to do this?
Thanks in advance Sreenu

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 12 Apr 2012
numcell = randperm(numel(Vn),4);
rows1 = 1:4;
datarnd = arrayfun(@(x,y)Vn{x}(y,:),numcell,rows1,'un',0);
out = cat(1,datarnd{:});

More Answers (1)

Richard on 12 Apr 2012
pre-allocate memory first, this may speed it up.
  1 Comment
KSSV on 12 Apr 2012
Yes it is pre allocated. But thing is some times I may pick two rows from two matrices, or o row from one matrix etc,..it is random...

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by