特征值与特征向量是线性代数核心概念,广泛应用于物理、工程、数据分析。MATLAB提供内置函数轻松计算探索。 什么是特征值? 特征值是标量λ,关联向量空间线性变换。表示变换中对应特征向量的缩放因子。 什么是特征向量? 特征向量是非零向量,线性变换下仅按标量因子缩放。若A为矩阵,v为A对应特征值λ的特征向量,则: Av = λv A为方阵,v为特征向量,λ为特征值。 MATLAB函数 eig函数 计算矩阵特征值与特征向量。 语法 e = eig(A) [V,D] = eig(A) [V,D,W] = eig(A) e = eig(A,B) [V,D] = eig(A,B) [V,D,W] = ei
MATLAB作为强大数值计算环境,支持面向对象编程(OOP),便于创建复杂可复用代码。MATLAB OOP核心围绕类与对象。 MATLAB支持的OOP特性: 对象、类、封装、继承、多态、抽象、属性、方法重载 OOP四大支柱:封装、抽象、继承、多态。 为什么用面向对象设计? 构建软件需设计数据并创建操作。过程式编程将数据传给函数操作;OOP将数据与操作打包成对象,通过定义接口交互。 MATLAB程序设计两种范式 MATLAB同时支持过程式和面向对象,可混合使用对象与普通函数。 过程式程序设计 关注点:实现目标的步骤 数据表示:独立变量或结构体字段 操作:函数接受数据参数 流程:调用系列函数
二维逆离散余弦变换(2-D IDCT/ICT)将余弦系数矩阵(频域表示)转回空域,还原原始信号或图像。是余弦变换的逆运算,在信号/图像处理中用于从频域重建信号图像。 MATLAB用idct2执行二维逆余弦变换,输入余弦系数矩阵,返回空域图像。常用于图像压缩(如JPEG)、图像重建、频域操作后还原。 二维逆离散余弦变换 语法 B = idct2(A) B = idct2(A,m,n) B = idct2(A,[m n]) 语法说明 B = idct2(A) —— 计算矩阵A的二维IDCT,结果存B,从频域重建空域图像 B = idct2(A,m,n) —— 计算IDCT并指定输出矩阵B尺寸为m
高斯滤波器是图像处理中用于模糊/平滑图像的线性滤波器,基于高斯函数定义形状。常用于降噪和减少细节,使图像更适合后续处理分析。 高斯拉普拉斯(LoG)滤波器是流行的图像增强与边缘检测滤波器,结合高斯滤波器和平滑后拉普拉斯算子。高斯滤波平滑降噪,拉普拉斯检测边缘。 LoG滤波器可检测不同尺度边缘。调整高斯标准差控制检测尺度:较小σ检测精细细节,较大σ检测宽泛特征。 示例1:使用fspecial()函数 fspecial()创建高斯滤波器,再计算其拉普拉斯得LoG滤波器。注意拉普拉斯滤波器要求高斯滤波器为double类型。 % 读取图像 img = imread(peppers.jpg); % 转灰
数学中导数表示函数对变量的变化率。简单说,它告诉我们函数在任意点如何变化。导数是微积分基础,广泛用于物理、工程、经济建模变化与运动。 例:函数描述汽车随时间位置,其导数即速度(位置变化率)。 多项式导数 多项式是变量不同幂次与系数组合的表达式。如P(x) = 3x² + 2x + 5是二次多项式。 多项式求导规则:每项系数乘指数,指数减1,对各项重复。 例:P(x) = 3x³ + 4x² + 2x + 1 3x³导数:3×3=9x² 4x²导数:4×2=8x 2x导数:2×1=2 常数项1导数:0 结果:P(x) = 9x² + 8x + 2 MATLAB求导 MATLAB用系数向量(按
MATLAB提供强大工具可视化数学表达式或函数。可绘制从简单线性方程到复杂数学表达式的广泛函数,在2D或3D空间呈现。这对分析理解数学函数行为的工程师、科学家、数学家极具价值。 MATLAB绘图主要方法: fplot() —— 2D绘图 fplot3() —— 3D绘图 MATLAB中使用fplot() fplot()绘制单变量函数在指定区间的图像,特别适合可视化数学函数与表达式。 语法 fplot(f) fplot(f,xinterval) fplot(funx,funy) fplot(funx,funy,tinterval) fplot(___,LineSpec) fplot(___,
Simulink 是集成于 MATLAB 的仿真与模型化设计环境,面向动态/嵌入式系统。由 MathWorks 开发,采用数据流图形化编程,支持建模、仿真、多分析。核心为可定制模块库的图形化建模工具。 特性: 系统级设计 仿真验证 自动代码生成 嵌入式系统测试验证 主要配套产品: Stateflow:状态机/流程图开发 Simulink Coder:自动生成 C 代码用于实时实现 xPC Target:x86 实时仿真测试环境 Embedded Coder:特定嵌入式目标支持 HDL Coder:自动生成可综合 VHDL/Verilog SimEvents:排队系统建模模块库 支持建模
GNU Octave 是高级编程语言,高度兼容 MATLAB,用于数值计算。共同特性: 矩阵为基本数据类型 内置复数支持 丰富数学函数库 支持用户自定义函数 Octave 基于 GPL 协议自由分发修改。 MATLAB 与 Octave 差异 大多数 MATLAB 程序可在 Octave 运行,但 Octave 允许部分 MATLAB 不支持的语法(如双引号字符串)。本教程示例多兼容双平台。 兼容示例:三维曲面图 [x,y] = meshgrid(-2:.2:2); g = x .* exp(-x.^2 - y.^2); surf(x, y, g) 两平台均生成相同 3D 图。 不兼容示例
MATLAB 提供 laplace、fourier、fft 命令处理变换。变换将时域信号转频域、微分方程转代数方程,简化分析。 拉普拉斯变换 定义:F(s)=∫₀^∞ f(t)e^{-st}dt。将 f(t) 转为 F(s)。 命令:laplace(f(t))。 常用函数变换 syms s t a b w laplace(a) % 1/s^2 (注:原文结果似有误,常数 a 变换应为 a/s) laplace(t^2) % 2/s^3 laplace(t^9) % 362880/s^10 laplace(exp(-b*t)) % 1/(b+s) laplace
MATLAB 用行向量按降幂存储多项式系数。如 P(x)=x⁴+7x³-5x+9 表示为: p = [1 7 0 -5 9] 多项式求值 polyval(p, x) 计算多项式在 x 处的值。 p = [1 7 0 -5 9]; polyval(p,4) % 693 polyvalm(p, X) 计算矩阵多项式(变量为矩阵)。 X = [1 2 -3 4; 2 -5 6 3; 3 1 0 2; 5 -7 3 8]; polyvalm(p, X) % 返回 4×4 矩阵 求多项式根 roots(p) 返回所有根(含复数)。 p = [1 7 0 -5 9]; r = roots(p) % -
积分分两类问题: 已知导函数求原函数 → 不定积分(反导数) 无限细分求和极限 → 定积分(面积、体积、物理量等) 不定积分 若 f(x²)=2x,则 ∫2x dx = x² + C。MATLAB 用 int(f) 求不定积分。 syms x; int(2*x) % x^2 常见表达式积分 syms x n int(x^n) % 分段:n=-1 时 log(x),否则 x^(n+1)/(n+1) int(sin(n*t)) % -cos(n*t)/n int(a*cos(pi*t)) % a*sin(pi*t)/pi int(a^x)
MATLAB 用 diff 命令进行符号求导。最简形式:diff(f)。 基本示例 syms t f = 3*t^2 + 2*t^(-2); diff(f) % 6*t - 4/t^3 Octave 对应 differentiate(f,t)。 求导法则验证 常用法则: 线性:(af+bg) = af + bg 和/差:(f±g) = f ± g 乘积:(fg) = fg + fg 商:(f/g) = (fg - fg)/g² 幂:(xⁿ) = n·xⁿ⁻¹,常数导数为 0 链式:h(x)=f(g(x)) → h = f(g)·g 复合函数求导示例 syms x t f = (x+2)*
MATLAB 提供符号计算工具解决微积分问题:极限、导数、微分方程、积分。本章聚焦极限。 极限计算 limit 函数计算极限。基本形式求自变量趋近 0 的极限: syms x limit((x^3+5)/(x^4+7)) % ans = 5/7 指定趋近值 a:limit(expr, a)。 limit((x-3)/(x-1), 1) % NaN(不存在) limit(x^2+5, 3) % 14 Octave 极限计算 需 pkg load symbolic,用 subs 代入近似: pkg load symbolic; symbols; x=sym(x); subs((x
MATLAB 与 Octave 在符号代数求解上语法不同,分节介绍。 MATLAB 求解基础代数方程 solve 函数求解方程,最简形式参数为字符串方程。 solve(x-5=0) % ans = 5 y = solve(x-5=0) % y = 5 solve(x-5) % 默认等于 0,ans = 5 多符号时默认解 x,可指定变量: solve(v-u-3*t^2=0, v) % ans = 3*t^2 + u Octave 求解基础代数方程 用 roots 求多项式根,系数向量按降幂排列: roots([1, -5]) % x-5=0 → a
本章进阶绘图技巧:柱状图、等高线图、三维图。 柱状图 bar 绘制二维柱状图。 示例:学生成绩 x = 1:10; y = [75,58,90,87,50,85,92,75,60,95]; bar(x,y); xlabel(Student); ylabel(Score); title(First Sem:) 等高线图 等高线连接函数值相等的点。contour 绘制等高线图,需 meshgrid 生成网格坐标。 示例:g = x² + y² [x,y] = meshgrid(-5:0.1:5, -3:0.1:3); g = x.^2 + y.^2; contour(x,y,g) 进阶:显示数值标
绘制函数图像三步走: 定义自变量 x 的取值范围 定义函数 y = f(x) 调用 plot(x, y) 基础示例 y = x,x ∈ [0,100],步长 5: x = [0:5:100]; y = x; plot(x, y) y = x²,对比步长 20 与 5 的平滑度: x = [-100:20:100]; y = x.^2; plot(x, y) % 折线感强 x = [-100:5:100]; y = x.^2; plot(x, y) % 平滑曲线 图形美化:标题、标签、网格、坐标轴 xlabel/ylabel:坐标轴标签 title:图标题 grid on:显示网格
数据导出即将数据写入文件。MATLAB 支持: 数组到分隔符 ASCII 文件 日志文件(键盘输入与输出记录) 低级 fprintf 创建特殊格式文本 MEX 文件调用 C/C++/Fortran 写入特定格式 导出到电子表格 数组导出为分隔符 ASCII 文件 两种方式: save -ascii:save my_data.out num_array -ascii dlmwrite:dlmwrite(my_data.out, num_array, dlm_char) 示例 num_array = [1 2 3 4; 4 5 6 7; 7 8 9 0]; save array_data1
数据导入即从外部文件加载数据。importdata 是高级函数,支持多种格式,提供 5 种调用形式: 序号语法与说明 1A = importdata(filename) 从文件加载到数组 A 2A = importdata(-pastespecial) 从剪贴板加载 3A = importdata(___, delimiterIn) 指定 ASCII 文件列分隔符 4A = importdata(___, delimiterIn, headerlinesIn) 跳过表头行 5[A, delimiterOut, headerlinesOut] = importdata(___) 返回检测到的分
函数是一组协同完成任务的语句。MATLAB 函数定义在独立文件中,文件名与函数名一致。函数拥有独立的 局部工作区,与命令行的 基础工作区 隔离。支持多输入多输出。 函数语法 function [out1,out2,...,outN] = myfun(in1,in2,...,inN) 示例:求五数最大值 文件 mymax.m: max) max = n5; end 首行 function 关键字定义接口。紧随的注释为帮助文本,help mymax 可显示。调用: mymax(34,78,89,23,11) % ans = 89 匿名函数 单语句内联函数,无需建文件。语法: f = @(arg
MATLAB 中字符串本质为字符数组。创建简单: my_string = Tutorials Point 用 whos 查看:1×16 char,占 32 字节。 可用 uint8/uint16 转 ASCII 码,char 还原: my_string = Tutorials Point; str_ascii = uint8(my_string) char(str_ascii) str_16bit = uint16(my_string) char(str_16bit) 矩形字符数组 存储多行文本需矩形字符数组(各行等长)。两种垂直拼接方式: [] 加分号,需手动补空格对齐 char 函数自动
MATLAB