在MATLAB编程时,你是不是经常因为不懂内部变量和函数而踩坑?比如不小心把变量命名为 pi 导致圆周率算不准,或者不知道用什么函数快速生成特定矩阵?其实,只要摸清了MATLAB内部变量与函数的脾气,你的代码不仅能少报错,运行效率还能大幅提升。今天我们就把MATLAB中那些高频使用的核心变量、内建函数以及逻辑矩阵操作一次性梳理清楚。
在MATLAB中,有一些变量是系统自带的,千万别把它们当成普通变量去赋值覆盖。
pi 代表圆周率,i 和 j 代表虚数单位。eps 是浮点运算的相对精度(2.2204e-16),在做极小数值比较时非常有用。realmax 和 realmin 分别代表最大的正浮点数和最小的正浮点数。Inf 或 inf 代表无穷大(比如执行了 1/0),NaN 或 nan 代表不定量(比如执行了 0/0)。ans 是默认的结果输出变量;nargin 和 nargout 能告诉你当前函数输入和输出的参数个数。tic 和 toc 是一对好搭档。在代码开头写个 tic;,结尾写个 t1 = toc;,就能直接获取这段代码运行的秒数。
MATLAB之所以在科学计算中如此强大,离不开它丰富的矩阵生成内建函数。
eye(n) 生成 n 阶单位矩阵,zeros(m,n) 和 ones(m,n) 分别生成全 0 和全 1 矩阵。true 和 false 则用来生成全真或全假的逻辑矩阵。rand 产生 0 到 1 之间均匀分布的随机矩阵,randn 产生标准正态分布的随机矩阵。如果想打乱顺序,可以用 randperm 产生随机排列。magic(n) 能生成 n 阶幻方矩阵,hilb(n) 生成著名的希尔伯特矩阵,compan 生成伴随矩阵。这些特殊矩阵在算法测试和数值分析中经常用到。处理数据时,我们经常需要判断矩阵的状态或对其进行变换。
all 判断是否所有元素都非零,any 判断是否至少有一个元素非零。isempty 检查矩阵是否为空,isequal 比较两个矩阵是否完全相同。遇到异常值,可以用 isinf 和 isnan 快速定位。find 是查找非零元素下标的神器;diag 可以抽取矩阵的对角线元素;fliplr 和 flipud 分别实现矩阵的左右翻转和上下翻转。det 计算行列式的值,inv 求逆矩阵,eig 求特征值和特征向量,rank 求矩阵的秩。在做图像处理时,数据类型不对经常会导致显示一片黑或者报错。MATLAB提供了专门的转换函数:
im2uint8:将图像转换为 8 位无符号整型(0-255)。im2uint16:将图像转换为 16 位无符号整型。im2double:将图像转换为双精度浮点型(0-1)。熟练掌握这些MATLAB内部变量与函数,是写出高效、稳健代码的基本功。建议大家在日常写代码时多查多用,把这些基础工具真正转化为自己的实战能力。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。