HOWTO · MATLAB
如何在 MATLAB 中检查变量类型
了解如何使用 class() 获取变量的类、使用 whos 查看工作区,以及用类型谓词检查条件。
本页内容
在 MATLAB 中检查值时,可以用 class() 获取其类名,用 whos 查看当前工作区中的变量,也可以用 isa()、ischar() 或 isnumeric() 等谓词得到逻辑结果。根据需要回答的问题选择方法:识别单个值、查看工作区变量,或让检查结果控制代码分支。
使用 MATLAB 中的 class() 函数检查变量的类型
class() 函数会返回一个字符向量,其中包含值的类名。例如,MATLAB 会将数值字面量 42 视为 double,而将单引号括起的文本 'Hello, MATLAB!' 视为类为 char 的字符数组。下面的兼容 Octave 脚本把类型检查和谓词检查放在同一流程中。
numericVar = 42;
charVar = 'Hello, MATLAB!';
fprintf('numericVar class: %s\n', class(numericVar));
fprintf('charVar class: %s\n', class(charVar));
fprintf('numericVar is double: %d\n', isa(numericVar, 'double'));
fprintf('charVar is a character array: %d\n', ischar(charVar));
fprintf('numericVar is numeric: %d\n', isnumeric(numericVar));
if isa(numericVar, 'double')
fprintf('Process numericVar as a double.\n');
end
numericVar class: double
charVar class: char
numericVar is double: 1
charVar is a character array: 1
numericVar is numeric: 1
Process numericVar as a double.
在 MATLAB 中,如果要获取一个值的实际类名,就使用 class(value)。它只报告这个值的信息,不会列出整个工作区的变量。
使用 MATLAB 中的 whos 命令检查变量类型
whos 命令会汇总当前工作区中的变量,包括名称、大小、字节数、类和属性。输入 whos 可查看工作区中的变量清单;输入 whos numericVar 则可检查指定变量。类这一列便于同时查看多个值。它只显示当前工作区或作用域中可见的变量,因此无法检查尚未赋给变量的任意表达式。若要回答单个值的类型问题,请使用 class(expression)。
在 MATLAB 中使用 isa() 检查特定类型
如果代码需要判断某个值是否属于指定类,可以使用 isa(value, 'typeName')。对于 numericVar = 42 和 charVar = 'Hello, MATLAB!',isa(numericVar, 'double') 与 isa(charVar, 'char') 会返回逻辑真,而 isa(numericVar, 'single') 会返回假。可以直接用结果控制 if 语句,示例脚本中就是这样做的。isa() 也会识别 MATLAB 的类关系:即使传入的名称不是该值的精确类名,只要它是相应的超类或接口,结果也可能为真。若要获取类名本身,请使用 class(value)。
在 MATLAB 中检查字符数组
ischar() 函数会返回逻辑值,用来说明输入是否为字符数组。对于 charVar = 'Hello, MATLAB!',ischar(charVar) 返回真;而 ischar(42) 返回假。当函数要求字符数组输入时,可以用 if ischar(value) 选择文本处理逻辑。用双引号括起的 MATLAB 字符串数组属于另一种类型,不会通过这项字符数组检查。区分这两者有助于处理同时接受字符向量和字符串值的程序。
在 MATLAB 中使用 isnumeric() 检查数值
使用 isnumeric(value) 可检查一个值是否属于数值类型。对于上面的示例,isnumeric(numericVar) 返回真,isnumeric(charVar) 返回假。该谓词涵盖 double、single 和各整数类等 MATLAB 数值类,但它并不表示通过检查的值一定是 double。逻辑值不会被此谓词视为数值。如果程序要求特定类,可使用 isa(value, 'double') 检查,或用 class(value) 查看确切类名。
总结
要获取单个值的类名,使用 class();要查看当前工作区中的变量,使用 whos;要为代码得到逻辑条件,可使用 isa()、ischar() 或 isnumeric()。这些工具回答的问题各不相同:用 class() 或 whos 查看类型信息,再根据程序需要满足的条件选择相应谓词。