I have a workspace A with value 81536x10 double. I want to take create new workspace from workspace A with row 1 to 112, 225 to 336, 449 to 560 and so on.

 Réponse acceptée

Jos (10584)
Jos (10584) le 25 Avr 2019

1 vote

ix = [0:224:81563]' + 1:112 ; % calculate row indices
ix(ix>size(A,1)) = [] % remove row indices that are too larger
A2 = A(ix, :) % a single array
Alternatively, you can store each section in a cell array
A3 = arrayfun(@(k) A(k:k+111, :), 1:224:81563, 'un', 0) % no check of indices

5 commentaires

Setiadi Suriana
Setiadi Suriana le 25 Avr 2019
Thank you for answer, but from that code, i only can get row 1-112 only but i want another rows 225 to 336, 449 to 560 and so on (until 81536)
Jos (10584)
Jos (10584) le 25 Avr 2019
My code does that doesn't it? I suggest you come up with a smaller example, giving the input and expected output, for instance for a 10-by-2 array A.
Setiadi Suriana
Setiadi Suriana le 25 Avr 2019
I tried with 6 by 2 array A and want to obtain values from rows 1-2 and 5-6 but the output only rows 1-2
Oh, this might be related to your version of ML.
A = randi(100,6,2)
ix = bsxfun(@plus,[0:1]', 1:4:size(A,1))
A(ix,:)
should return rows 1-2 and rows 5-6 of A
Setiadi Suriana
Setiadi Suriana le 26 Avr 2019
Thank you, now it is working

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Version

R2017b

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by