creating Arrys from another big array

2 vues (au cours des 30 derniers jours)
Rica
Rica le 7 Juil 2015
Hi, I have an array A of the size 1X1000. and i have a vector of Index: index=[1 25 40 63 77 99 100]
is there any easy way in matlab to create such arrays:
Arr1=(A(index(1)): A(index(2)))
Arr2=(A(index(2)): A(index(3)))
Arr3=(A(index(3)): A(index(4)))
and so on...
  2 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 7 Juil 2015
Post a small example
Rica
Rica le 7 Juil 2015
sorry i mad a mistake:this is the corrected question: Hi, I have an array A of the size 1X100 . and i have a vector of Index: index=[1 25 40 63 77 99 100]
is there any easy way in matlab to create such arrays:
Arr1=(A(index(1)): A(index(2)))
Arr2=(A(index(2)): A(index(3)))
Arr3=(A(index(3)): A(index(4)))
and so on...

Connectez-vous pour commenter.

Réponse acceptée

Thorsten
Thorsten le 7 Juil 2015
Modifié(e) : Thorsten le 7 Juil 2015
index=[1 25 40 63 77 99 100]
A = rand(1,100);
for i = 1:numel(index)-1
B{i} = A(index(i):index(i+1));
end
Note that the index(2), index(3), ... index(N-1) elements occur twice in B, such that B has numel(index) -2 elements more than A.

Plus de réponses (1)

Guillaume
Guillaume le 7 Juil 2015
Another option to Thorsten's answer:
indices = [1 25 40 63 77 99 100];
A = rand(1, 100);
B = arrayfun(@(s,e) A(s:e), indices(1:end-1), indices(2:end), 'UniformOutput', false);
Note that it while it is possible to create variable names on the fly as in your example. It's a very bad idea. Using a cell array as in our answers is much better.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by