getting smaller arrays in sequence from a big array
Mostrar comentarios más antiguos
Hello all
I have an array which contains more than 1000 elements (lets say 'Array A'). I want to use this array to get smaller size arrays. For example 'Array 1' should include first 'n' elemets of the 'Array A' and 'Array 2' should include the next n elements of the 'Array A' and so on...
How can I do this with a for loop?
Thanks for the answers...
Regards
Suleyman
Respuesta aceptada
Más respuestas (2)
Jing
el 16 de En. de 2013
Hi Suleyman,
There're many different ways to achieve what you want. I'm not sure what is the best one for your purpose, which depends on what kind of smaller arrays do you want. Following is my code, I prefer to use cell to store related arrays. A is the large array, and B has ten 10*10 array in it. You can index into B like B{2}(10,5), which is the A(10,15) originally.
A=rand(10,100);
n=10;
for i=1:(size(A,2)/n)
B{i}=A(:,(i-1)*n+1:i*n);
end
Jan
el 16 de En. de 2013
If you have the data in one compact array, why do you want to split it into several arrays, which contain an index in the name of the variable? It is much more convenient and flexible to use another array, e.g. a cell.
A = rand(1000, 1);
n = 100;
B = reshape(A, n, []);
Now B(:, i) is what you call "Array 1".
If you really need a FOR loop, here an example with a cell:
n = 100;
Len = numel(A);
Num = ceil(Len / n);
B = cell(1, Num);
for ii = 1:Num
ini = 1 + (ii - 1) * n;
fin = min(ii * n, Len);
B{ii} = A(ini:fin);
end
1 comentario
Suleyman Deveci
el 16 de En. de 2013
Categorías
Más información sobre Matrix Indexing en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!