# MATLAB: Create a structure from discrete column vectors or a 3 x n matrix composed of column vectors

MATLABmatrix to structureposition vectorsvector to structure

Hi
I'm trying to build a structure consisting of elements which are column vectors representing x, y, z points. So far, I have written the following code, which indexes arrays representing x, y, z positions of points from a structure called 'data' (derived from a .ply 3d graphics file) and rearranges them into a 3 x n matrix:
 % orders vertex data from structure into column vectors x = data.vertex.x y = data.vertex.y z = data.vertex.z % vertically concatenates x, y, z to form a 3 x n matrix stored in the  % structure, verts verts = horzcat(x, y, z) %Sequentially indexes PX PY PZ into a 3 x n matrix where columns are x y z  %components of position vectors  for i=1:length(x)         vertsnew(:,i)=[x(i);y(i);z(i)]; end
This creates a matrix of the form:
 3.7427    3.74984   1.38903 4.7384    3.76483   8.76289 9.6389    9.62843   5.78290  .............
I want to create a structure where each column vector in this array is a seperate element. I thought the following might do the trick:
 vertz=struct();   for k=1:size(x)   Vk = [vertsnew(1,k)];   vertz.(['VZ' num2str(k)])=Vk; end
But this results in a structure with x, y, z arranged sequentially as individual elements. E.g:
 vertz.VZ.1 = 3.7427 vertz.VZ.2 = 4.7384  vertz.VZ.3 = 9.6389
I am able to create individual column vectors using:
%Orders arrays, into discrete column vectorsfor i=1:length(x)      assignin('base',['vertv' num2str(i)],[x(i);y(i);z(i)])end
E.g.
 vertv1 = 3.7427 vertv2 = 4.7384
etc
Though I am unsure how to obtain the desired structure from these seperate arrays. Any help would be greatly appreciated.
Thomas

• y=[3.7427    3.74984   1.38903   4.7384    3.76483   8.76289   9.6389    9.62843   5.78290]for k=1:size(y,2)  vertz.(sprintf('VZ%d',k))=y(:,k)end