Get columns from a matrix

1 view (last 30 days)
gsourop
gsourop on 4 Nov 2016
Answered: Alexandra Harkai on 4 Nov 2016
Hi everyone! I have a matrix 432x90 and I want to create several subtables from this Table. The pattern I want these new tables to follow goes like this: I would like the first matrix to contain the values of the columns 1,16,31,46,61,76 of the initial matrix, i.e. 1, (1+15=16), (16+15=31), (31+15=46) and so on...the second matrix to get the values of the columns 2,17,32,47,62,77, the exact same case for the 3rd to 15th new matrix. Can I do this in to a loop instead of manually? I would appreciate some help! Thanks a lot in advance.

Accepted Answer

Alexandra Harkai
Alexandra Harkai on 4 Nov 2016
m; % this is your 432x90 matrix
N = 15; % number of small matrices
res(N).small_matrix = []; % init empty nonscalar struct array for results
cols = 1:size(m, 2);
for n = 1:N
res(n).small_matrix = m(:, mod(cols, N) == mod(n, N));
end
This may not be the best solution though, it is not clear why you need to 'cut up' the initial matrix to smaller ones. If it is about just accessing certain parts of the data, it may not be such a good idea to do the whole thing, but you could access the part you need at any given time using this piece:
m(:, mod(cols, N) == mod(n, N))

More Answers (1)

Adam
Adam on 4 Nov 2016
mySubMatrix = myMatrix( :, 1:15:end );
etc.
This smells of ending up with lots of ugly named variables, but they could be put into a cell array instead or similar. You could even just create a function handle to the original table in each case probably.

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!