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.

 Respuesta aceptada

Jos (10584)
Jos (10584) el 25 de Abr. de 2019

1 voto

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 comentarios

Setiadi Suriana
Setiadi Suriana el 25 de Abr. de 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) el 25 de Abr. de 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 el 25 de Abr. de 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
Jos (10584)
Jos (10584) el 25 de Abr. de 2019
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 el 26 de Abr. de 2019
Thank you, now it is working

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Productos

Versión

R2017b

Etiquetas

Preguntada:

el 25 de Abr. de 2019

Comentada:

el 26 de Abr. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by