Vector slicing for loop
16 views (last 30 days)
Show older comments
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);
0 Comments
Answers (1)
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.
0 Comments
See Also
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!