第 1 章:你的第一个数据分析¶
场景: 物理实验课上,你测量了一组弹簧伸长量与拉力的数据,需要计算弹性系数并验证胡克定律。打开 MATLAB,让我们用代码完成这个任务。
1.1 从实验数据开始¶
假设你记录了以下数据:
| 拉力 F (N) | 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|---|
| 伸长量 x (cm) | 0 | 1.2 | 2.3 | 3.5 | 4.6 | 5.8 |
在 MATLAB 命令窗口中输入:
% 输入实验数据
F = [0, 1, 2, 3, 4, 5]; % 拉力,单位:牛顿
x = [0, 1.2, 2.3, 3.5, 4.6, 5.8]; % 伸长量,单位:厘米
% 计算弹性系数 k = F / x(胡克定律)
k = F ./ x; % 逐元素除法
% 查看结果
disp('弹性系数 k (N/cm):');
disp(k);
输出效果:
第一个值是 NaN(因为 0/0 无意义),其余值在 0.83~0.87 之间,说明弹性系数基本恒定,验证了胡克定律。
1.2 MATLAB 界面速览¶
打开 MATLAB 后,你会看到四个主要区域:
| 区域 | 位置 | 功能 |
|---|---|---|
| 命令窗口 | 中央 | 输入命令,立即执行并显示结果 |
| 工作区 | 右侧 | 显示当前所有变量及其值 |
| 当前文件夹 | 左侧 | 浏览和管理文件 |
| 编辑器 | 中央(打开脚本时) | 编写和保存 .m 脚本文件 |
两种工作模式
- 命令行模式:在命令窗口逐行输入,适合探索和快速计算
- 脚本模式:在编辑器中写
.m文件,适合复杂任务和重复使用
1.3 变量与赋值¶
MATLAB 是动态类型语言,变量无需声明类型:
a = 42; % 标量(单个数值)
name = 'MATLAB'; % 字符串(用单引号)
isReady = true; % 逻辑值
% 分号 ; 抑制输出,不加分号则显示结果
b = 3.14 % 不加分号,会在命令窗口显示 b = 3.1400
输出效果: 不加分号时,命令窗口显示 b = 3.1400。加分号时静默执行,不显示输出。
1.4 矩阵:MATLAB 的核心¶
MATLAB 的名字就是"矩阵实验室",一切皆矩阵。
创建矩阵¶
% 行向量
row = [1, 2, 3, 4, 5]; % 逗号分隔
row = [1 2 3 4 5]; % 空格分隔也行
% 列向量
col = [1; 2; 3; 4; 5]; % 分号表示换行
% 矩阵
A = [1, 2, 3;
4, 5, 6;
7, 8, 9];
% 快速生成序列
x = 1:10; % 1 到 10,步长为 1
x = 1:2:10; % 1, 3, 5, 7, 9(步长为 2)
x = linspace(0, 1, 100); % 0 到 1 之间均匀取 100 个点
输出效果: 工作区窗口会显示每个变量的名称、维度、类型和值。双击变量可打开电子表格视图。
矩阵索引¶
A = [10, 20, 30;
40, 50, 60;
70, 80, 90];
A(2, 3) % 第 2 行第 3 列 → 60
A(1, :) % 第 1 行所有列 → [10, 20, 30]
A(:, 2) % 所有行第 2 列 → [20; 50; 80]
A(1:2, 2:3) % 第 1~2 行,第 2~3 列 → [20, 30; 50, 60]
输出效果: 命令窗口逐行显示索引结果,矩阵以行列格式对齐输出。
1.5 基本运算¶
矩阵运算 vs 逐元素运算¶
A = [1, 2; 3, 4];
B = [5, 6; 7, 8];
A * B % 矩阵乘法 → [19, 22; 43, 50]
A .* B % 逐元素乘法 → [5, 12; 21, 32](注意点号 .)
A / B % 矩阵右除(A * inv(B))
A ./ B % 逐元素除法 → [0.2, 0.333; 0.429, 0.5]
A ^ 2 % 矩阵幂(A * A)
A .^ 2 % 逐元素幂 → [1, 4; 9, 16]
输出效果: 矩阵乘法结果按线性代数规则计算;逐元素运算(带 . 前缀)对每个位置独立计算。
常用数学函数¶
x = [0, pi/2, pi];
sin(x) % 正弦 → [0, 1, 1.2246e-16]
cos(x) % 余弦 → [1, 6.1232e-17, -1]
exp(x) % e^x
log(x) % 自然对数
sqrt(x) % 平方根
abs(x) % 绝对值
round(x) % 四舍五入
输出效果: 所有函数默认对矩阵每个元素独立计算(向量化),结果是与输入同尺寸的矩阵。
1.6 编写第一个脚本¶
在编辑器中新建文件 spring_analysis.m:
% spring_analysis.m —— 弹簧弹性系数分析
clear; clc; close all; % 清理工作环境
% 1. 输入实验数据
F = [0, 1, 2, 3, 4, 5];
x = [0, 1.2, 2.3, 3.5, 4.6, 5.8];
% 2. 计算弹性系数(排除第一个 0/0 点)
k = F(2:end) ./ x(2:end);
% 3. 统计分析
k_mean = mean(k);
k_std = std(k);
% 4. 输出结果
fprintf('弹性系数均值:%.4f N/cm\n', k_mean);
fprintf('弹性系数标准差:%.4f N/cm\n', k_std);
运行方式: 点击编辑器上方的"运行"按钮,或按 F5。
输出效果:
标准差很小,说明弹性系数稳定,胡克定律成立。
1.7 常用快捷操作¶
| 操作 | 快捷键/命令 |
|---|---|
| 运行脚本 | F5 |
| 清空命令窗口 | clc |
| 清空工作区变量 | clear |
| 关闭所有图形窗口 | close all |
| 查看变量信息 | whos |
| 查看帮助 | help 函数名 或 doc 函数名 |
| 注释/取消注释 | Ctrl+R / Ctrl+T |
本章回顾¶
你已经用 MATLAB 完成了第一个数据分析任务!回顾掌握的技能:
- 理解 MATLAB 的矩阵核心思想
- 创建向量和矩阵,使用索引访问元素
- 区分矩阵运算(
*)和逐元素运算(.*) - 使用向量化函数处理数据
- 编写和运行
.m脚本文件 - 用
fprintf格式化输出结果