In previous chapters we have discussed how to select EBSD data by properties. In this chapter we are intested in the order the EBSD are stored within MTEX. Lets start by importing some sample data
mtexdata twins
ebsd = EBSD
Phase Orientations Mineral Color Symmetry Crystal reference frame
0 46 (0.2%) notIndexed
1 22833 (100%) Magnesium LightSkyBlue 6/mmm X||a*, Y||b, Z||c*
Properties: bands, bc, bs, error, mad, x, y
Scan unit : um
and restricting it to very small rectangular subset
poly = [44 0 4 2];
ebsd = ebsd(inpolygon(ebsd,poly));
plot(ebsd,ebsd.orientations,'micronbar','off','edgecolor','k')

In the above plot each square corresponds to one entry in the variable ebsd
. Lets visualize the order
text(ebsd,1:length(ebsd))

We may easily select specific measurement pixels by specifying their indeces
hold on
plot(ebsd(16:18),'edgeColor','red','facecolor','none','linewidth',4)
legend off
hold off

Whether lines or columns run first is not related to MTEX but inherits from the ordering of the imported EBSD data. Since, we have restricted our large EBSD map to the small subset the indece of restricted data does not coincide with the indece of the imported data anymore. However, the original indeces are still stored in ebsd.id
. Lets visualize them
plot(ebsd,ebsd.orientations,'micronbar','off','edgecolor','k')
text(ebsd,ebsd.id)

In order to select EBSD data according to their original id use the option 'id'
, i.e.,
hold on
plot(ebsd('id',316:318),'edgeColor','red','facecolor','none','linewidth',4)
legend off
hold off

Square Grids
In the cases of gridded data it is often useful to convert them into a matrix form.
ebsd = ebsd.gridify;
plot(ebsd,ebsd.orientations,'micronbar','off')
[i,j] = ndgrid(1:size(ebsd,1),1:size(ebsd,2));
str = arrayfun(@(a,b) ['(' int2str(a) ',' int2str(b) ')'],i,j,'UniformOutput',false);
text(ebsd,str)

This allows to select EBSD data simply by their coordinates within the grid, e.g., by
hold on
plot(ebsd(2,2:4),'edgeColor','red','facecolor','none','linewidth',4)
legend off
hold off

Note that the gridify
command changes the order of measurements. They are now sort such that rows runs first and columns second, as this is the default convention how Matlab indexes matrices.
plot(ebsd,ebsd.orientations,'micronbar','off')
text(ebsd,1:length(ebsd))

Hexagonal Grid
The command gridify
may also be applied to EBSD data measured on a hexagonal grid.
mtexdata titanium silent
ebsd = ebsd.gridify
ebsd = EBSDhex
Phase Orientations Mineral Color Symmetry Crystal reference frame
0 8100 (99%) Titanium (Alpha) LightSkyBlue 622 X||a, Y||b*, Z||c*
Properties: ci, grainid, iq, sem_signal, x, y, oldId
Scan unit : um
Grid size (hex): 97 x 84
This rearranges the measurements in a matrix form which can be indexed similarly as in the square case.
ebsd = ebsd(10:16,68:79);
Lets visualize the matrix coordinates for the hexagonal grid
plot(ebsd,ebsd.orientations,'edgeColor','k','micronbar','off')
axis off
[i,j] = ndgrid(1:size(ebsd,1),1:size(ebsd,2));
str = arrayfun(@(a,b) ['(' int2str(a) ',' int2str(b) ')'],i,j,'UniformOutput',false);
text(ebsd,str)

Cube Coordinates
In hexognal grids it is sometimes advantageous to use three digit cube coordinates to index the cell. This can be done using the commands hex2cube
and cube2hex
. Much more details on indexing hex grids can be found at here.
plot(ebsd,ebsd.orientations,'edgeColor','k','micronbar','off')
axis off
[i,j] = ndgrid(1:size(ebsd,1),1:size(ebsd,2));
[x,y,z] = ebsd.hex2cube(i,j);
str = arrayfun(@(a,b,c) ['(' int2str(a) ',' int2str(b) ',' int2str(c) ')'],x,y,z,'UniformOutput',false);
text(ebsd,str)
