creating Arrys from another big array

1 次查看(过去 30 天)
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 个评论
Rica
Rica 2015-7-7
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...

请先登录,再进行评论。

采纳的回答

Thorsten
Thorsten 2015-7-7
编辑:Thorsten 2015-7-7
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.

更多回答(1 个)

Guillaume
Guillaume 2015-7-7
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.

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by