필터 지우기
필터 지우기

Separate arrays within loop using indexing?

조회 수: 2 (최근 30일)
Nicholas Kavouris
Nicholas 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
if start has 5 elements 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:
for k=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);
for k = 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개)

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]}

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by