MATLAB变量不必像 C 语言或 Java 那样先写类型声明。赋值的同时创建变量,类型由右侧内容推断。另一个贯穿始终的事实是:数值变量在内部仍按矩阵(含 1×1、行向量、列向量等形态)组织。

赋值即创建

x = 3          % 创建 1×1 的 double
name = 'Ada'   % 字符向量
data = [1 2 3] % 行向量

对比 C 语言里常见的 int x = 3;char name[] = "Ada";,这里无需事先写出类型名。同一名字被再次赋值时,可以换成另一种尺寸或类型的数据。

未赋值的结果:ans

一句计算若没有写在等号左边,结果进入默认变量 ans

sqrt(78)
ans = 8.8318
sqrt(78);
9876 / ans
ans = 1118.2

ans 会随下一次未命名计算被覆盖。正式脚本里应为中间结果起明确名字,减少对 ans 的依赖。

who、whos、clear

工作区变量变多后,可用下列命令查看或清理:

who     % 只列名字
whos    % 名字、尺寸、字节、类型
clear x % 删除指定变量
clear   % 清空工作区

whos 输出类似:

Name     Size         Bytes  Class
x        1x1              8  double
name     1x3              6  char
data     1x3             24  double

data 显示为 1x3,表示 1 行 3 列。

format:只改显示

默认常用 short 显示约四位小数。用 format 切换显示方式,不改变变量在内存中的存储精度:

format long    % 更多小数位
format bank    % 两位小数
format short e % 科学计数法
format rat     % 有理近似
format short   % 回到默认
format long
x = 7 + 10/3 + 5 ^ 1.2
x = 17.2319816406394

长语句换行

一行过长时,在行末写 ... 续到下一行:

MATLAB 变量与计算示例运行
final_velocity = initial_velocity ...
                + acceleration * time;
initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity + acceleration * time
final_velocity = 196

向量与矩阵的初步写法

行内元素用空格或逗号分隔,换行用分号:

r = [7 8 9 10 11]     % 行向量
c = [7; 8; 9; 10; 11] % 列向量
m = [1 2 3; 4 5 6]    % 2×3 矩阵

更完整的索引与运算在下一章展开。此处先记住分隔规则即可。

自查

  • 赋值后,whos 里能否看到该变量?
  • 执行 a = 2; b = 7; c = a*b 后,哪些赋值因分号而未在窗口显示?
  • format long 会不会改变 pi 在内存中的值?
  • [1 2 3; 4 5 6] 是几行几列?