How can I read matlab export as a multi-dimensional array?
-
I have exported the E-field resulting from a simulation into a matlab file (call it myresult.mat). For this, I have created a pipeline that gets the fields from a simulation and then I have attached an exporter.
When I load myresult.mat in matlab I get the following variables:
- Axis0, Axis1, Axis2 with shape1x11 values per axis. These are the Cartesian grid axis
- Snapshot0 with shape 1000,3. These are the 3 components of my field at the cell center of the Cartesian grid
I would like to reshape my flat list of values (i.e. Snapshot0) into a 4d array such that each dimension represents a component and the spatial axis, i.e. Snapshot0[c,i,j,k] where c is an index to the field component and i,j,k are indices to the discretization of space.
-
In Matlab, you can reshape the Snapshot0 quantity in the following way.
- For cell-centered data with 3 components (e.g. Electric field E(x,y,z)):
E = reshape(Snapshot0, [length(Axis0)-1, length(Axis1)-1, length(Axis2)-1, 3)
which you can then use as:
E[i,j,k,c]
where c is an index to the field component and i,j,k are indices to the discretization of space.
- For point data with 1 component (e.g. Vector potential V(x,y,z)):
V = reshape(Snapshot0, [length(Axis0), length(Axis1), length(Axis2))
which you can then use as:
V[i,j,k]
where i,j,k are indices to the discretization of space.