ndgrid on matrices without the use of cell arrays

4 views (last 30 days)
jack
jack on 23 Dec 2015
Commented: jack on 24 Dec 2015
Hi guys,
I need your help in solving the following problem:
Given a dxn matrix, do the following (preferably without the use of cells):
n is always even and d is also even.
Thanks in advance.
  2 Comments
James Tursa
James Tursa on 23 Dec 2015
Edited: James Tursa on 23 Dec 2015
What is the general pattern? E.g., are the rows always split into 1x2 blocks, or are the rows split in half? Is n always even? You need to give us more information.
jack
jack on 23 Dec 2015
Edited: jack on 23 Dec 2015
I have updated the question.
The aim is very similar to the problem stated by the following link: http://www.mathworks.com/matlabcentral/answers/258365-ndgrid-on-cell-array-of-vectors
but i need your help in solving it for matrices.

Sign in to comment.

Answers (1)

Andrei Bobrov
Andrei Bobrov on 23 Dec 2015
Edited: Andrei Bobrov on 23 Dec 2015
m = size(A,1); % A - your array
b = reshape(A,m,[],2);
[ii,jj] = ndgrid(1:m);
out2 = [b(jj(:),:,1),b(ii(:),:,2)]
  2 Comments
jack
jack on 24 Dec 2015
Edited: jack on 24 Dec 2015
Your suggestion is good but it is not fully correct, to correct it change only b to :
b = reshape(A,m,[],size(A,2)/2);
and making the output of ndgrid a cell array.
jack
jack on 24 Dec 2015
but how can i do it without cell arrays? i need a code that works for every even n and d = 2!!

Sign in to comment.

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!