Extracting multiple subarrays from a given array in a loop, when the corresponding mulitple start- and end-point pairs are given

6 views (last 30 days)
Assume I have an array of given size, say 100. I have 5 pairs which specify the start and end-point indices of the subarrays I would like to extract from the original array.
How to do this task in a for loop and in each iteration, store the subarray in a different vector? (because all subarrays may not be of same size)

Accepted Answer

Daniel
Daniel on 12 Sep 2023
You can create a cell array with curly braces:
cellArray = {};
Elements of a cell array can be anything, for instance variable-size vectors. Even the data types can be different, though that's not relevant to your question.
cellArray{1} = [1 2 3];
cellArray{2} = [single(4)];
cellArray{3} = false;
cellArray{4} = dsp.SineWave;
You can read the cell array the same way as writing it:
for i=1:length(cellArray)
cellArray{i}
end
ans = 1×3
1 2 3
ans = single 4
ans = logical
0
ans =
dsp.SineWave with properties: Amplitude: 1 Frequency: 100 PhaseOffset: 0 ComplexOutput: false Method: 'Trigonometric function' SamplesPerFrame: 1 SampleRate: 1000 OutputDataType: 'double'
Now if you store your starting and ending indices in an appropriate matrix (say 5x2), you can create your cell array of variable-size vectors iteratively in a for loop.

More Answers (0)

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!