Vector slicing for loop

107 views (last 30 days)
P Walter
P Walter on 17 May 2020
Answered: Ang Feng on 17 May 2020
I'm very new to Matlab and stuck right now with a for loop. I'd like to slice the array and grab blocks of 512 Samples. I want to grab the 10 blocks and write them into a new array. My following Code only grabs the first block.
for i=1:10;
blockindex=0;
startpoint = ((blockindex -1)*512)+1;
endpoint = ((blockindex) * 512)+1;
helparray = sound6_(startpoint:1:endpoint);
mic1 = [mic1; + helparray];
blockindex = blockindex + 40;
end
plot(mic1);

Answers (1)

Ang Feng
Ang Feng on 17 May 2020
I am not 100% sure about what you want to do exactly by 'slice'. If you want to rearrange the signal to a specific format, then the reshape function helps you do that. See the link to reshape:
For a signal stored as array A, and you can just reshape A by the dimension you specify
n = floor(numel(A)/512);
B = reshape(A,[512 n]);
The you have columns of B is a vector of 512 elements, and save the first 10 columns to a new variable is easy.
C = B(:,1:10);
numel is the function to find the number of elements of a matrix.

Categories

Find more on Creating and Concatenating Matrices 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!