Separate arrays within loop using indexing?

조회 수: 1(최근 30일)
尼古拉斯Kavouris
尼古拉斯Kavouris 2022년 4월 5일
답변: Walter Roberson 2022년 4월 5일
I have matricies for start and stop time of system cycle. How can i iterate this over a raw dataset so that each loop produces a new matirix containing the points from start(i) to stop(i)?
start and stop will have equal elements but may have numel 1-20
如果有5个元素开始s loop will produce data.1-data.5
What im looking for:
ex start=[1,8]; stop=[7,11]
data=[2,2,2,3,3,4,4,2,3,4,4,2]
ans=
data.1=[2,2,2,3,3,4,4]
data.2=[2,3,4,4]
have tried:
fork=1:numel(start)
seperated_data(k)=data(start(k):stop(k))
end

채택된 답변

DGM
DGM 2022년 4월 5일
You should just be able to use a cell array.
start = [1,8];
stop = [7,11];
data = [2,2,2,3,3,4,4,2,3,4,4,2];
% same thing, but with a cell array
seperated_data = cell(numel(start),1);
fork = 1:numel(start)
seperated_data{k}=data(start(k):stop(k));
end
% show the contents of the output
celldisp(seperated_data)
seperated_data{1} = 2 2 2 3 3 4 4 seperated_data{2} = 2 3 4 4
댓글 수: 1
尼古拉斯Kavouris
尼古拉斯Kavouris 2022년 4월 5일
Worked like a charm! Thank you.

댓글을 달려면 로그인하십시오.

추가 답변(1개)

Walter Roberson
Walter Roberson 2022년 4월 5일
start = [1,8];
stop = [7,11];
data = [2,2,2,3,3,4,4,2,3,4,4,2];
seperated_data = arrayfun(@(B,E) data(B:E), start, stop,'uniform', 0)
seperated_data =1×2 cell array
{[2 2 2 3 3 4 4]} {[2 3 4 4]}

태그

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by