How can I repeat row and column extraction of a matrix until the end of the matrix is reached?

2 views (last 30 days)
I have a 1015x2 matrix of data and I'd like to extract the data in 145x2 incraments and add them to another matrix until I've reached the end of the original 1015x2 matrix. The next 145x2 extraction would then be added to 3rd and 4th columns of the new matrix. The resulting matrix should end up being of size 145x14. Thank you!

Accepted Answer

Vandit
Vandit on 18 Sep 2024
Hello @wbenn7,
You can achieve this by using a combination of indexing and concatenation in MATLAB. Here's an example of how you can extract and add the data in increments of 145x2 to create a new matrix of size 145x14:
% Original matrix of size 1015x2
originalMatrix = rand(1015, 2);
% Initialize the new matrix
newMatrix = [];
% Extract and add data in increments of 145x2
for i = 1:145:size(originalMatrix, 1)
data = originalMatrix(i:i+144, :);
% Add the data to the new matrix
newMatrix = [newMatrix, data];
end
In the above example, 'originalMatrix' is a matrix with dimensions 1015x2. An empty 'newMatrix' is initialized, and a for loop is used to extract and append data in increments of 145x2. The extracted data is stored in the data variable and concatenated with 'newMatrix' using the concatenation operator [].
After the loop completes, 'newMatrix' will have dimensions 145x14, with each 145x2 increment added as columns to form the new matrix.
For more information on 'Creating, Concatenating, and Expanding Matrices', please refer to the below documentation:
Hope this helps.

More Answers (1)

Voss
Voss on 18 Sep 2024
M = rand(1015,2);
incr = 145;
m = size(M,1)/incr;
n = size(M,2);
newM = reshape(permute(reshape(M,[],m,n),[1 3 2]),[],m*n);

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!