杰瑞科技汇

MATLAB基础与应用教程该怎么学?

MATLAB 基础及应用教程

第一部分:MATLAB 简介

什么是 MATLAB?

MATLAB基础与应用教程该怎么学?-图1
(图片来源网络,侵删)

MATLAB 的名字来源于 "MATrix LABoratory"(矩阵实验室),它是由美国 MathWorks 公司开发的一款商业数学软件,主要用于:

  • 数值计算
  • 可视化
  • 编程
  • 算法开发

MATLAB 的核心数据结构是矩阵,这使得它特别适合处理线性代数问题、数据分析、信号处理等任务,它拥有一个名为工具箱 的附加组件,针对特定领域(如信号处理、图像处理、控制系统、深度学习等)提供了大量预编写的函数,极大地扩展了其功能。

为什么选择 MATLAB?

  • 语法简单: 接近数学表达式的语言,易于学习和使用。
  • 强大的矩阵运算能力: 无需编写复杂的循环,一行代码即可完成复杂的矩阵运算。
  • 丰富的工具箱: 覆盖了几乎所有工程和科学计算领域。
  • 出色的可视化功能: 可以轻松绘制各种高质量的 2D 和 3D 图形。
  • 庞大的社区和资源: 有大量的文档、教程、示例和用户支持。

第二部分:MATLAB 基础入门

MATLAB 工作环境

MATLAB基础与应用教程该怎么学?-图2
(图片来源网络,侵删)

当你启动 MATLAB 时,会看到几个主要的窗口:

  • 命令行窗口: 这是与 MATLAB 交互的主要地方,你可以在这里输入命令并立即看到结果。
  • 当前文件夹: 显示 MATLAB 当前正在操作的文件夹中的文件,你可以在这里创建、打开、保存脚本和文件。
  • 工作区: 显示当前内存中所有变量的名称、大小和值,当你创建变量时,它们会出现在这里。
  • 命令历史记录: 记录了你在命令行窗口中输入过的所有命令。

基本操作

  • clc 清除命令行窗口。
  • clear 清除工作区中的所有变量。
  • who 列出工作区中的变量名。
  • whos 列出工作区中的变量名及其详细信息(大小、类型等)。
  • help 函数名 获取某个函数的帮助信息。
  • doc 函数名 在帮助文档中打开某个函数的详细页面。

变量与赋值

MATLAB 中的变量无需预先声明类型,使用 进行赋值。

% 创建一个变量 a 并赋值为 5
a = 5;
% 创建一个字符串变量
name = '张三';
% 显示变量的值
disp(a);
% 在命令行直接输入变量名也会显示其值
name

基本数据类型:矩阵

这是 MATLAB 的核心。

  • 创建向量(一维矩阵):

    % 行向量
    row_vector = [1, 2, 3, 4, 5];
    % 列向量 (使用分号或回车换行)
    col_vector = [1; 2; 3; 4; 5];
    % 或者
    % col_vector = [1
    %               2
    %               3
    %               4
    %               5];
  • 创建矩阵(二维矩阵):

    % 使用空格或逗号分隔列,使用分号分隔行
    A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
  • 特殊矩阵生成:

    % 创建一个 3x4 的全零矩阵
    zeros_matrix = zeros(3, 4);
    % 创建一个 2x2 的全一矩阵
    ones_matrix = ones(2, 2);
    % 创建一个 3x3 的单位矩阵
    identity_matrix = eye(3);
    % 创建一个 2x5 的随机矩阵 (0到1之间均匀分布)
    random_matrix = rand(2, 5);
    % 创建一个 2x5 的随机矩阵 (均值为0,方差为1的正态分布)
    .randn_matrix = randn(2, 5);

矩阵索引

访问矩阵中的元素使用圆括号 。

A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
% 访问第 2 行,第 3 列的元素
element = A(2, 3); % 结果是 6
% 访问第 1 行的所有元素
first_row = A(1, :); % 冒号 : 表示所有列
% 访问第 2 列的所有元素
second_col = A(:, 2); % 冒号 : 表示所有行
% 修改元素
A(1, 1) = 100;

基本运算

  • 算术运算符:

    • , , (矩阵乘法), (元素乘法), (矩阵除法), (元素除法), ^ (矩阵幂), .^ (元素幂)
      A = [1, 2; 3, 4];
      B = [5, 6; 7, 8];

    % 矩阵乘法 C = A * B;

    % 元素乘法 (对应元素相乘) D = A .* B;

  • 关系运算符:

    • , , >, <, >=, <=,返回一个逻辑矩阵 (0 或 1)。
      A = [1, 5; 3, 2];
      B = A > 2; % B 将是 [0, 1; 1, 0]
  • 逻辑运算符:

    • & (与), (或), (非)。
      A = [1, 0; 0, 1];
      B = [0, 1; 1, 0];
      C = A & B; % C 将是 [0, 0; 0, 0]

常用内置函数

  • sum(A): 对矩阵 A 的列求和。
  • mean(A): 计算矩阵 A 的列的平均值。
  • max(A): 找到矩阵 A 每列的最大值。
  • min(A): 找到矩阵 A 每列的最小值。
  • size(A): 返回矩阵 A 的维度 [行数, 列数]。
  • length(A): 返回矩阵 A 中最长维度的长度。
  • reshape(A, m, n): 将矩阵 A 重塑为 m x n 的新矩阵。
  • transpose(A)A': 矩阵的转置。

第三部分:MATLAB 脚本与控制流

脚本文件

为了避免在命令行窗口重复输入代码,我们使用脚本文件(.m 文件)。

  • 点击 "新建脚本" 按钮。
  • 在编辑器中编写代码。
  • 点击 "保存" 并命名为 my_script.m
  • 点击 "运行" 按钮或在命令行窗口输入 my_script 来执行。

控制流

  • if-elseif-else 语句:

    score = 85;
    if score >= 90
        disp('优秀');
    elseif score >= 80
        disp('良好');
    elseif score >= 60
        disp('及格');
    else
        disp('不及格');
    end
  • for 循环:

    % 计算 1 到 10 的和
    sum_total = 0;
    for i = 1:10
        sum_total = sum_total + i;
    end
    disp(['总和为: ', num2str(sum_total)]);
  • while 循环:

    % 找到小于 100 的最大的 2 的幂
    power = 1;
    while power * 2 < 100
        power = power * 2;
    end
    disp(['结果是: ', num2str(power)]);

第四部分:数据可视化

基本绘图函数

  • plot 函数: 绘制 2D 线图。

    % 创建数据
    x = 0:0.1:2*pi; % 从 0 到 2π,步长为 0.1
    y = sin(x);
    % 绘制图形
    plot(x, y);
    % 添加标题和坐标轴标签'正弦函数');
    xlabel('x 轴');
    ylabel('y 轴');
    grid on; % 显示网格
  • subplot 函数: 在一个窗口中创建多个子图。

    x = 0:0.1:2*pi;
    subplot(2, 1, 1); % 2行1列,在第1个位置绘图
    plot(x, sin(x));'正弦函数');
    subplot(2, 1, 2); % 2行1列,在第2个位置绘图
    plot(x, cos(x));'余弦函数');
  • 其他常用图形:

    • scatter(x, y): 散点图。
    • bar(y): 条形图。
    • histogram(y): 直方图。
    • pie(y): 饼图。

第五部分:MATLAB 实际应用领域

MATLAB 的强大之处在于其工具箱,以下是几个主要应用领域:

数学与数值分析

  • 求解线性方程组: A\b

    A = [2, 1; 1, 3];
    b = [4; 7];
    x = A \ b; % 等价于 A⁻¹ * b
  • 多项式拟合: polyfitpolyval

    x = [1, 2, 3, 4, 5];
    y = [2.1, 3.9, 6.2, 7.8, 10.1];
    % 用 2 次多项式拟合数据
    p = polyfit(x, y, 2); % 返回多项式系数
    % 计算拟合后的 y 值
    y_fit = polyval(p, x);
    % 绘制原始数据和拟合曲线
    plot(x, y, 'o', x, y_fit, '-');
    legend('原始数据', '拟合曲线');
  • 数值积分: integral

  • 求解微分方程: ode45

信号处理

  • 信号生成与滤波: 使用 Signal Processing Toolbox

    % 生成一个含噪声的正弦信号
    t = 0:0.001:1;
    f = 50; % 50 Hz
    clean_signal = sin(2*pi*f*t);
    noise = 0.2 * randn(size(t));
    noisy_signal = clean_signal + noise;
    % 设计一个低通滤波器
    Wp = 60/(1/2/0.001); % 通带截止频率
    Ws = 80/(1/2/0.001); % 阻带截止频率
    [b, a] = butter(4, [Wp, Ws]/(1/2/0.001), 'stop');
    % 应用滤波器
    filtered_signal = filtfilt(b, a, noisy_signal);
    % 绘制结果
    subplot(3,1,1); plot(t, clean_signal); title('原始信号');
    subplot(3,1,2); plot(t, noisy_signal); title('含噪声信号');
    subplot(3,1,3); plot(t, filtered_signal); title('滤波后信号');

图像处理

  • 读取、显示、处理图像: 使用 Image Processing Toolbox

    % 读取一张灰度图像
    I = imread('cameraman.tif');
    % 显示图像
    figure;
    imshow(I);'原始图像');
    % 对图像进行高斯滤波去噪
    J = imgaussfilt(I, 2);
    % 显示处理后的图像
    figure;
    imshow(J);'滤波后图像');

控制系统

  • 传递函数分析与系统响应: 使用 Control System Toolbox

    % 创建一个传递函数 G(s) = 1 / (s^2 + 2s + 1)
    num = [1];
    den = [1, 2, 1];
    G = tf(num, den);
    % 绘制系统的阶跃响应
    step(G);'系统阶跃响应');

第六部分:学习资源与建议

官方资源

  • MATLAB 官方文档: 最权威、最全面的资源,使用 doc 命令或访问 MathWorks 官网。
  • MATLAB Onramp: MathWorks 官方提供的免费互动入门课程,强烈推荐给所有初学者。

书籍

  • 《MATLAB从入门到精通》:国内经典的入门书籍,内容全面。
  • 《MATLAB编程与工程应用》:更侧重于工程实践。
  • 《MATLAB Guide》 (Desmond Higham & Nicholas Higham):国外的经典之作,适合深入学习。

在线教程与社区

  • MathWorks 官方示例: 在文档中可以找到海量的代码示例。
  • GitHub: 搜索 "MATLAB examples",可以找到许多开源项目和高质量代码。
  • Bilibili / YouTube: 有大量免费的视频教程,适合喜欢看视频学习的用户。

学习建议:

  1. 动手实践: MATLAB 是一门实践性很强的语言,不要只看书,一定要把代码敲出来运行,修改参数,观察结果。
  2. 从模仿开始: 找一些简单的示例代码,理解它,然后尝试修改它,实现自己的功能。
  3. 学会使用 helpdoc 这是 MATLAB 程序员最重要的两个工具,遇到任何函数,首先想到的就是查看官方文档。
  4. 分阶段学习: 先掌握基础语法和矩阵操作,再学习脚本和流程控制,最后根据自己的兴趣深入学习特定工具箱。

希望这份教程能帮助你顺利开启 MATLAB 的学习之旅!祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇