# How can I split two side-by-side vectors into many individual vector pairs?

1 view (last 30 days)
Patrick on 21 Oct 2013
Commented: Patrick on 21 Oct 2013
I have several 10368x1 vectors, of which each of the 10368 pieces represents a value at a different location on a map. I would like to put two of them at a time side-by-side, and split them horizontally into 10368 separate 2x1 vectors, such that:
M = [ 1 3 5 7 9 ]
N = [ 0 2 4 6 8 ]
WANT:
MN1 = [ 1 0 ]
MN2 = [ 3 2 ]
MN3 = [ 5 4 ]
MN4 = [ 7 6 ]
MN5 = [ 9 8 ]
The end result should be a pair of different values at each location. Here's the kicker: since some of these vectors include NaN values, and I don't want to misplace any of the associated locations in the vectors, I would also like to return NaN values as placeholders for any incomplete pair of data, such that:
M = [ 1 3 NaN 7 9 ]
N = [ 0 2 4 6 NaN ]
WANT:
MN1 = [ 1 0 ]
MN2 = [ 3 2 ]
MN3 = NaN
MN4 = [ 7 6 ]
MN5 = NaN
How can I do this?

Azzi Abdelmalek on 21 Oct 2013
M = [ 1 3 NaN 7 9 ];
N = [ 0 2 4 6 NaN ];
idx=any(isnan([M;N]));
out=arrayfun(@(x,y) [x y],M,N,'un',0) ;
out(idx)={nan}
Azzi Abdelmalek on 21 Oct 2013
What do you mean?
Patrick on 21 Oct 2013
Please see my new question. I have the cell array, but I need to perform a K-means analysis, and it is not working. I thought leaving the NaN values in might solve that problem, as the internal code for K-means in MATLAB automatically takes NaN values out of the equation, but I still have no luck.

### Categories

Find more on Logical 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!