# MTEX 命令导读：把软件对象接回数学定义

核对日期：2026-10-23。下列是带注释的学习模板，假定已安装 MTEX。相名、文件接口、坐标和函数返回值需按自己的版本填写；并未在材料数据上运行这些模板。先在 MATLAB 中查看 `help 函数名`，保留导入向导生成的脚本。

## 1. 导入之后先认识对象

通过 MTEX 导入向导选择文件、相表、晶体对称性和 Euler 参考系，生成 `EBSD.load` 调用。向导里的轴向选择有物理含义，不能为了让地图朝向好看而试到满意为止。对照 [官方导入教程](https://mtex-toolbox.github.io/EBSDTutorial.html) 与 [Bunge 约定](https://mtex-toolbox.github.io/MTEXvsBungeConvention.html)。

```matlab
% ebsd 由导入向导生成；本模板不提供文件路径或通用坐标变换。
ebsd                         % 查看相表、点数、字段和单位
plot(ebsd)                   % 先看相图与未索引区域
phaseName = '填写实际相名';
phase = ebsd(phaseName);      % 选择一个真实存在的相
ori = phase.orientations;    % 每点的完整旋转，不是 RGB 颜色
```

常见的 `convertEuler2SpatialReferenceFrame` 等导入选项是在统一两个参考系。是否需要它必须由文件约定决定。官方示例中某个样品需要的 180° 转动不是所有数据的必需步骤。

## 2. 同一取向，PF 与 IPF 的输入为何不同

```matlab
cs = phase.CS;
h = Miller(0,0,1,cs,'hkl');  % 示例晶面法向；按材料选择反射族
plotPDF(ori,h)               % 观察固定晶体法向在试样中的方向
plotIPDF(ori,zvector)        % 观察固定试样 Z 对应哪条晶体方向

key = ipfHSVKey(cs);
if isprop(key,'ipfDirection')
    key.ipfDirection = zvector;
else
    key.inversePoleFigureDirection = zvector; % 旧版本属性名
end
rgb = key.orientation2color(ori);
plot(phase,rgb)
```

`zvector` 只代表当前试样坐标中的 Z，只有记录证明 Z=ND 时才能标成 IPF-ND。色键属性在版本间有变化，上例先检查对象属性；仍应以本机帮助为准。数学上 PF 用 `R h`，IPF 用 `Rᵀ y`。给出 IPF 色图时还须给该相色键，不能从颜色直接读取应变。见 [官方 IPF 色图教程](https://mtex-toolbox.github.io/EBSDIPFMap.html)。

## 3. 晶粒分割与 KAM：先定义对象，再选参数

`calcGrains` 的作用是在同相邻接关系和错取向阈值下建立区域。官方不同年代示例存在 `[grains,ebsd]` 与多个返回数组等接口，应先查看本机帮助，再把返回的晶粒 ID 正确关联到像素。不要只复制变量名称。

```matlab
help calcGrains
help EBSD.KAM
% 按本机 calcGrains 接口得到 grains 以及带正确 grainId 的 phase。
% 确认同晶粒限制生效后，再计算下列示例 KAM：
kamAngle = phase.KAM('order',1,'threshold',5*degree);
plot(phase,kamAngle./degree)
```

这里 1 阶和 5° 用于说明语法，不能作为通用推荐值。KAM 的分母是筛选后有效邻点总权重。无有效邻点应该保留缺失。`degree` 是角单位常数：显示为度时除以它；进入曲率推导时保留弧度。[官方 KAM 定义](https://mtex-toolbox.github.io/EBSDKAM.html) 应与网格、晶粒限制一起阅读。

## 4. GROD、GOS、GAM 不要只认缩写

GROD 先选参考取向，例如每粒均值；GOS 再对粒内 GROD 角度按指定权重平均；GAM 汇总局部邻点差。`calcGROD` 和 `grains.GOS` 等入口是否可直接使用，取决于晶粒对象是否由正确像素构建。[官方晶粒取向参数](https://mtex-toolbox.github.io/GrainOrientationParameters.html) 给出该软件采用的定义。

不能把 Euler 三个角分别取算术平均充当一般的均值取向。例如 359° 与 1° 的平均方向接近 0°，不是 180°。有对称性时还要先处理等价取向。不同书或软件中 GOS 也可能指不同统计量，报告写公式比只写缩写可靠。

## 5. ODF：由已有旋转样本估计密度

```matlab
% 以下逐像素统计在等面积网格上近似为截面面积权重。
odf = calcDensity(ori,'halfwidth',10*degree);
plotSection(odf)
plotPDF(odf,h)
```

10° 是语法示例。带宽增大一般使峰变宽、变低；这不表示材料的某组分真的减少。若改为每粒均值等权，得到的是晶粒数权重；若均值取向另乘面积，则保留面积权重但舍弃晶内散布。三者都要说明。

`m.r.d.` 是密度相对随机的倍数。组分比例需要对完整取向的邻域积分，并按晶体对称去重。仅把 PF 中一个圆圈内的点数叫“该取向组分比例”，会丢掉围绕极点的转动自由度。详见 [ODF 估计文档](https://mtex-toolbox.github.io/EBSD2ODF.html) 和专题 `texture-odf`、`texture-components`。

## 6. Schmid 和迹线：可以先在普通 MATLAB 中手算

```matlab
R = eye(3);                 % 课堂晶体→试样取向；不是导入数据
nC = [1;1;1]/sqrt(3);       % FCC (111) 法向
sC = [1;0;-1]/sqrt(2);      % 面内 [10-1] 滑移方向
n = R*nC; s = R*sC;
L = [0;0;1];               % 单轴加载方向
N = [0;0;1];               % 观测表面法向
m = dot(s,L)*dot(n,L);      % 有符号 m≈-0.408248
t = cross(n,N);
if norm(t) > 1e-12
    t = t/norm(t);          % t 与 -t 代表同一条无向迹线
else
    t = [NaN;NaN;NaN];     % 平行平面，无法定义稳定交线
end
```

在非立方晶体中，先用直接基把方向转成笛卡尔向量，用倒易基把面指数转成法向。上述 `nC=[h;k;l]` 的简写仅适用于这个立方例子。真实迹线比较还需把 SEM 图像校正到相同坐标。

## 7. GND：先读清返回量，再运行反演

[官方 GND 教程](https://mtex-toolbox.github.io/GND.html) 将取向曲率、位错系统旋转和 `fitDislocationSystems` 连接起来。先确认规则网格或差分方式，再得到 `ebsd.curvature`；二维表面的第三空间导数缺失是预期信息缺口。

不要只写三行“算曲率、乘 10¹⁶、画 GND”就结束。需要逐一记录：

1. 晶格坐标是否为 μm，Burgers 长度是否为 Å；仅在两者如此配对时，`1/(μm·Å)` 到 `m⁻²` 的因子为 `10¹⁶`。
2. 软件的曲率分量、旋度与转置约定。正文采用 `α=κᵀ−tr(κ)I`，比较时先统一。
3. 允许的刃/螺位错和 Burgers 矢量；必须属于所研究的相。
4. 线能权重 `u`、优化方法及依赖。此类求解可能需要 MATLAB Optimization Toolbox。
5. 返回标量是否能量加权。官方 `calcGND` 示例的能量加权输出不能不加说明地写成未加权总线密度。
6. 晶界、缺失点、噪声和参考处理。优化给出一组满足条件的解，不意味着位错类型已被唯一识别。

## 8. 哪些功能不能只靠取向文件补出来

HR-EBSD 花样互相关需要原始花样、参考及几何标定；应力还需弹性常数和条件。母相重构需要 OR、晶粒邻接、变体及多候选处理。滑移活动需要变形证据；最大 Schmid 因子只是一项几何排序。二维界面迹线不足以给出三维晶界法向。把输入需求看清楚，才能知道何时值得进入下一项分析。

完成图组后，使用配套参数记录表逐项回填。能说清楚一张图从什么信息来、保留什么、缺少什么，才算学会了这项功能。
