Matlab 2024a 建模基础知识全面指南

一、Matlab简介

1. Matlab是什么?

        Matlab(Matrix Laboratory)是由MathWorks公司开发的一个高性能的数值计算环境和编程语言。它以其强大的矩阵运算能力、丰富的工具箱和便捷的数据可视化功能而闻名,广泛应用于科学研究、工程模拟、数据分析、金融建模等领域。

        Matlab最初是为了解决矩阵运算问题而开发的,因而在处理矩阵和数组运算上有显著的优势。Matlab能够执行数值计算、可视化和编程,这使得用户可以轻松地解决复杂的数学问题,创建图形和图像,并开发复杂的模型和仿真。

2. Matlab的发展历史

        Matlab的发展可以追溯到20世纪70年代末。Cleve Moler在撰写《数值线性代数》教科书时,想要提供一个能方便进行矩阵计算的软件工具,于是创建了Matlab。这种工具最初仅在学术界和教育界使用,但是随着其影响力的扩大,逐渐被各大工业界所接受。

  • 早期版本(如Matlab 1.0):Matlab的首次发布可以追溯到1984年,由Cleve Moler、Jack Little和Steve Bangert开发。最初版本是基于Fortran的,主要用于矩阵运算。

  • 重要里程碑版本(如Matlab 4.0, Matlab 6.5, Matlab 2016b):每个主要版本的发布都带来了重要的新功能和改进。例如,Matlab 4.0引入了新的图形用户界面,Matlab 6.5引入了M文件的面向对象编程功能,而Matlab 2016b推出了Live Scripts,还支持异步计算等功能。

  • 最新版本Matlab 2024a的主要特性:最新发布的Matlab 2024a版本进一步提升了其计算和可视化能力。它包括更快的数据分析功能、增强的机器学习支持、改进的实时编辑和调试工具等。新的版本还增强了和云计算的整合,使得用户可以更方便地在云环境中运行Matlab代码。

3. Matlab的主要特点和优势

        Matlab拥有许多独特的特点和优势,使其成为科学计算和工程模拟领域的首选工具:

  • 强大的矩阵运算能力:Matlab最初设计就是为了解决矩阵和数组运算问题,它的核心数据类型是矩阵,使其在各种矩阵和线性代数运算中表现非常出色。

  • 丰富的工具箱:Matlab附带了许多专门的工具箱(Toolbox),如信号处理工具箱、图像处理工具箱、控制系统工具箱等,这些工具箱为用户提供了各自领域内的高级函数和工具。

  • 便捷的数据可视化功能:Matlab提供了强大的绘图和图形功能,可以很方便地生成二维和三维图形,而且能够对图形进行详细的自定义,以满足不同的展示需求。

  • 高效的数值计算能力:Matlab能够高效地执行各种数值计算,包括大规模矩阵运算、优化问题求解、复杂函数求解等,因而广泛应用于科学研究和工程分析中。

  • 强大和灵活的编程环境:Matlab不仅仅是一个计算工具,它也是一种高水平编程语言,支持脚本编写、函数定义、面向对象编程等,用户可以编写复杂的程序来自动化各种任务。

4. Matlab的主要应用领域

        由于其强大的功能和灵活性,Matlab在许多领域中得到了广泛应用:

  • 科学研究:许多科学家和工程师使用Matlab进行数据分析、数学建模和仿真研究。它提供的丰富函数库和工具箱能够解决不同学科中的复杂问题。

  • 工程模拟:在工程领域,Matlab被广泛用于设计、仿真和优化工程系统,如控制系统、通信系统、电力系统等。

  • 金融分析与建模:金融工程师使用Matlab进行风险管理、投资组合优化、衍生品定价等金融分析和建模工作。Matlab的金融工具箱提供了专门的数学模型和算法,帮助解决金融中的复杂问题。

  • 图像与信号处理:Matlab在图像处理、信号处理领域也有广泛应用。通过图像处理工具箱和信号处理工具箱,用户可以进行图像增强、滤波、傅里叶变换等操作。

  • 控制系统设计与仿真:在控制系统领域,Matlab与Simulink工具紧密集成,提供了从模型构建、参数调整、实时仿真到代码生成的全套工具,帮助工程师设计和优化控制系统。

        通过以上几个方面的详细介绍,不难看出Matlab在数值计算、数据分析与可视化、工程模拟等领域的独特优势和广泛应用。这个环境不仅为研究和工程开发提供了有力的支持,还在不断发展和完善中,引领着科学计算的潮流。

二、Matlab 2024a 环境

1. Matlab 2024a的界面介绍

        Matlab 2024a 延续了其一贯的简洁、直观的用户界面设计,同时对某些功能进行了改进和优化,进一步提升了用户体验。

  1. 主窗口

    • 主窗口是Matlab的主要操作界面,其中包括“命令窗口”、“工作区”、“当前文件夹”等核心区域。
    • 命令窗口(Command Window):这是用户输入和执行Matlab命令的主要地方。用户可以直接在命令窗口中运行单行命令或脚本。
    • 工作区(Workspace):显示当前运行环境中的变量及其属性。用户可以在此查看和管理变量,包括删除、重命名和查看变量值。
    • 当前文件夹(Current Folder):显示和浏览当前工作目录中的文件和文件夹。用户可以通过该窗口方便地管理Matlab脚本和函数。
  2. 命令历史记录窗口(Command History)

    • 该窗口记录了用户在命令窗口中输入的所有命令。可以通过双击过去的命令来重新执行它们,极大地方便了操作和调试。
  3. 编辑器窗口(Editor)

    • 用于编写和编辑Matlab脚本和函数。编辑器支持语法高亮、自动缩进、代码折叠和断点设置等功能,帮助用户更高效地编写代码。
    • Matlab 2024a 在编辑器中新增了实时协作编辑功能,使多个用户可以同时编辑同一个脚本或函数,提高了团队协作效率。
  4. 图形窗口(Figure Window)

    • 用于显示由绘图函数生成的图形。图形窗口支持多种交互操作,如放大、缩小、平移、旋转等,用户可以通过菜单或工具栏对图形进行各种修改和设置。
    • Matlab 2024a 对图形窗口进行了优化,新增了更加精细的图形渲染模式和更多的自定义选项。
  5. 文档窗口(Documentation)

    • 提供Matlab内置的详细帮助文档和示例。用户可以在此查阅函数用法、查看示例代码和浏览相关主题。

2. 如何安装Matlab 2024a

3. 常见工具栏和窗口的功能

        Matlab 2024a 提供了丰富的工具栏和窗口,便于用户进行各种操作。以下是一些常见工具栏和窗口的功能介绍:

  1. 文件操作工具栏

    • 包含常用的文件操作,如新建文件、打开文件、保存文件、打印文件等功能。用户可以通过这些快捷按钮快速进行文件管理。
  2. 编辑工具栏

    • 包含剪切、复制、粘贴、撤销、重做等编辑功能,方便用户在编辑脚本和函数时进行文本操作。
  3. 运行工具栏

    • 包含运行脚本、调试脚本、清除命令窗口等功能。用户可以通过这些按钮快速运行代码、设置或跳过断点以及清除命令窗口内容。
  4. 图形工具栏

    • 提供放大、缩小、旋转、保存图形等功能,用于对绘图进行操作和管理。
    • Matlab 2024a 的图形工具栏中新增了更多的自定义配置选项,用户可以根据需要对图形进行细致调整。
  5. 工作区窗口

    • 显示当前工作区中的变量及其属性,用户可以在此查看变量的数值、类型、大小等信息。
    • 可以直接从工作区窗口中编辑和管理变量,如修改变量值、删除变量等。
  6. 命令历史窗口

    • 记录用户在命令窗口中输入的所有命令,用户可以在这里查看之前执行过的命令,并可以通过双击命令来重新执行。
  7. 当前文件夹窗口

    • 显示当前工作目录中的文件和文件夹,用户可以在此浏览、打开、删除、重命名文件等。
    • 通过拖放文件到命令窗口或编辑器窗口,可以快速载入和编辑文件。

三、基本语法

1. 基本数据类型

        Matlab作为一个强大的数值计算环境,最基本的数据类型是矩阵。但除此之外,Matlab还支持标量、向量、矩阵、字符串、结构体、元胞数组等。

  1. 标量、向量和矩阵
  • 标量:单个数值,可以是整数、浮点数等。
  • 向量:一维数组,可以是行向量或列向量。
  • 矩阵:二维数组,其中每个元素可以是标量。
% 标量
a = 5;% 行向量
v = [1, 2, 3];% 列向量
w = [1; 2; 3];% 矩阵
M = [1, 2, 3; 4, 5, 6; 7, 8, 9];

数据类型总结

数据类型示例说明
标量a = 5单个数值
行向量v = [1, 2, 3]一维数组,行向量
列向量w = [1; 2; 3]一维数组,列向量
矩阵M = [1, 2, 3; 4, 5, 6; 7, 8, 9]二维数组
  1. 高级数据类型
  • Cell数组:可以包含不同类型的数据,例如数值、字符串等。
  • 结构体:允许存储不同类型的数据,并通过字段名来访问数据。
% Cell数组
C = {1, 'text', [3, 4, 5]};% 结构体
S.name = 'John';
S.age = 30;
S.data = [1, 2, 3];

高级数据类型总结

数据类型示例说明
Cell数组C = {1, 'text', [3, 4, 5]}可以包含不同类型的数据
结构体S.name = 'John';通过字段名访问数据

2. 基本运算符与表达式

        Matlab支持丰富的运算符,包括算术运算符、逻辑运算符和关系运算符。

  1. 算术运算符
  • 加法(+)、减法(-)、乘法(*)、除法(/)、幂运算(^
% 算术运算
x = 5 + 3; % 加法
y = 10 - 2; % 减法
z = 4 * 3; % 乘法
w = 12 / 3; % 除法
p = 2 ^ 3; % 幂运算

算术运算符总结

运算符示例说明
+5 + 3加法
-10 - 2减法
*4 * 3乘法
/12 / 3除法
^2 ^ 3幂运算
  1. 逻辑运算符
  • 与(&&)、或(||)、非(~
% 逻辑运算
a = (5 > 3) && (4 < 6); % 与运算,结果为true
b = (5 > 3) || (4 > 6); % 或运算,结果为true
c = ~(5 > 3); % 非运算,结果为false

逻辑运算符总结

运算符示例说明
&&(5 > 3) && (4 < 6)与运算(日常用&表示)
``
~~(5 > 3)非运算
  1. 关系运算符
  • 等于(==)、不等于(~=)、小于(<)、大于(>)、小于等于(<=)、大于等于(>=
% 关系运算
isEqual = (5 == 5); % 结果为true
isNotEqual = (5 ~= 3); % 结果为true
isLessThan = (3 < 5); % 结果为true
isGreaterThan = (7 > 4); % 结果为true
isLessThanOrEqual = (4 <= 4); % 结果为true
isGreaterThanOrEqual = (6 >= 2); % 结果为true

关系运算符总结

运算符示例说明
==5 == 5等于
~=5 ~= 3不等于
<3 < 5小于
>7 > 4大于
<=4 <= 4小于等于
>=6 >= 2大于等于

3. 常用内置函数

        Matlab提供了许多内置函数,方便用户进行各种常见的数学运算和数据处理。

  1. 基础数学函数
  • 求和(sum)、均值(mean)、标准差(std)、最大值(max)、最小值(min
data = [1, 2, 3, 4, 5];% 求和
total = sum(data);% 均值
average = mean(data);% 标准差
standardDeviation = std(data);% 最大值
maximum = max(data);% 最小值
minimum = min(data);

基础数学函数总结

函数示例说明
sumsum(data)求和
meanmean(data)均值
stdstd(data)标准差
maxmax(data)最大值
minmin(data)最小值
  1. 矩阵操作函数
  • 转置(transpose')、逆矩阵(inv)、行列式(det
matrix = [1, 2; 3, 4];% 转置
transposeMatrix = transpose(matrix);
transposeMatrixAlt = matrix';% 逆矩阵
inverseMatrix = inv(matrix);% 行列式
determinant = det(matrix);

矩阵操作函数总结

函数示例说明
transposetranspose(matrix) 或 matrix'矩阵转置
invinv(matrix)逆矩阵
detdet(matrix)行列式
  1. 文件操作函数

        Matlab 提供了方便的文件读写功能,支持多种文件格式,如文本文件、CSV文件、Excel文件等。

% 创建一个文本文件并写入数据
fileID = fopen('example.txt', 'w');
fprintf(fileID, 'Hello, Matlab!');
fclose(fileID);% 读取文本文件中的数据
fileID = fopen('example.txt', 'r');
content = fscanf(fileID, '%s');
fclose(fileID);% 读取CSV文件
data = csvread('data.csv');% 写入CSV文件
csvwrite('output.csv', data);% 读取Excel文件
excelData = xlsread('data.xlsx');% 写入Excel文件
xlswrite('output.xlsx', excelData);

文件操作函数总结

函数示例说明
fopenfopen('example.txt', 'w')打开文件
fprintffprintf(fileID, 'Hello, Matlab!')写入数据到文件
fclosefclose(fileID)关闭文件
fscanffscanf(fileID, '%s')从文件读取数据
csvreadcsvread('data.csv')读取CSV文件
csvwritecsvwrite('output.csv', data)写入数据到CSV文件
xlsreadxlsread('data.xlsx')读取Excel文件
xlswritexlswrite('output.xlsx', data)写入数据到Excel文件

        通过上述内容,希望能够更好地理解 Matlab 的基本语法,包括基本数据类型、基本运算符与表达式,以及常用内置函数。以下是对这些知识的一个简要总结,帮助巩固所学内容。

总结

基本数据类型

        Matlab 提供了丰富的数据类型,方便用户进行数值计算和数据处理,包括标量、向量、矩阵、高级数据类型(如 Cell 数组和结构体)等。

数据类型总结表格

类型示例说明
标量a = 5单个数值
行向量v = [1, 2, 3]一维数组
列向量w = [1; 2; 3]一维数组,列向量
矩阵M = [1, 2, 3; 4, 5, 6;]二维数组
Cell 数组C = {1, 'text', [3, 4, 5]}可包含不同类型的数据
结构体S.name = 'John';通过字段名访问不同类型的数据

基本运算符与表达式

        Matlab 提供了丰富的运算符,包括算术运算、逻辑运算和关系运算,方便进行各种复杂的数学运算。

运算符总结表格

类型运算符示例说明
算术运算符+5 + 3加法
-10 - 2减法
*4 * 3乘法
/12 / 3除法
^2 ^ 3幂运算
逻辑运算符&&(5 > 3) && (4 < 6)与运算
~~(5 > 3)非运算
关系运算符==5 == 5等于
~=5 ~= 3不等于
<3 < 5小于
>7 > 4大于
<=4 <= 4小于等于
>=6 >= 2大于等于

常用内置函数

        Matlab 内置了大量函数,方便进行各种数学运算和数据处理,包括基础数学函数、矩阵操作函数和文件操作函数。

内置函数总结表格

类型函数示例说明
基础数学函数sumsum(data)求和
meanmean(data)均值
stdstd(data)标准差
maxmax(data)最大值
minmin(data)最小值
矩阵操作函数transposetranspose(matrix) 或 matrix'矩阵转置
invinv(matrix)逆矩阵
detdet(matrix)行列式
文件操作函数fopenfopen('example.txt', 'w')打开文件
fprintffprintf(fileID, 'Hello, Matlab!')写入数据到文件
fclosefclose(fileID)关闭文件
fscanffscanf(fileID, '%s')从文件读取数据
csvreadcsvread('data.csv')读取CSV文件
csvwritecsvwrite('output.csv', data)写入数据到CSV文件
xlsreadxlsread('data.xlsx')读取Excel文件
xlswritexlswrite('output

四、数据操作与可视化

1. 数据导入与导出

        在科学计算和工程应用中,数据的导入与导出是非常常见和重要的操作。Matlab提供了多种方式来处理不同格式的文件。

  1. 导入数据
  • 从文本文件导入数据
  % 导入文本文件中的数据fileID = fopen('data.txt', 'r');data = fscanf(fileID, '%f');fclose(fileID);
  • 从CSV文件导入数据
  % 导入CSV文件中的数据data = csvread('data.csv');
  • 从Excel文件导入数据
  % 导入Excel文件中的数据data = xlsread('data.xlsx');

导入数据函数总结

函数示例说明
fopenfopen('data.txt', 'r')打开文本文件
fscanffscanf(fileID, '%f')从文本文件读取数据
csvreadcsvread('data.csv')从CSV文件读取数据
xlsreadxlsread('data.xlsx')从Excel文件读取数据
  1. 导出数据
  • 导出数据到文本文件
  % 将数据写入文本文件fileID = fopen('output.txt', 'w');fprintf(fileID, '%f\n', data);fclose(fileID);
  • 导出数据到CSV文件
  % 将数据写入CSV文件csvwrite('output.csv', data);
  • 导出数据到Excel文件
  % 将数据写入Excel文件xlswrite('output.xlsx', data);

导出数据函数总结

函数示例说明
fopenfopen('output.txt', 'w')打开文本文件
fprintffprintf(fileID, '%f\n', data)写入数据到文本文件
csvwritecsvwrite('output.csv', data)写入数据到CSV文件
xlswritexlswrite('output.xlsx', data)写入数据到Excel文件

2. 数据处理与分析

        在导入数据后,通常需要进行一些数据处理和分析操作。Matlab提供了许多强大的工具和函数来进行数据处理。

  1. 数据清洗与预处理
  • 处理缺失值
  % 生成包含缺失值的数据data = [1, 2, NaN, 4, 5];% 移除缺失值data = data(~isnan(data));
  • 填补缺失值
  % 用均值填补缺失值data_with_nan = [1, 2, NaN, 4, 5];data_with_nan(isnan(data_with_nan)) = mean(data_with_nan(~isnan(data_with_nan)));
  • 异常值检测
  % 检测并移除异常值data = [1, 2, 3, 100, 5];Q1 = quantile(data, 0.25);Q3 = quantile(data, 0.75);IQR = Q3 - Q1;lower_bound = Q1 - 1.5 * IQR;upper_bound = Q3 + 1.5 * IQR;data_clean = data(data >= lower_bound & data <= upper_bound);

数据清洗函数总结

操作函数或步骤说明
移除缺失值data = data(~isnan(data))移除数据中的缺失值
填补缺失值data_with_nan(isnan(data_with_nan)) = mean(non_nan)用均值填补缺失值
异常值检测lower_bound = Q1 - 1.5 * IQR; upper_bound = Q3 + 1.5 * IQR; data_clean = data(data >= lower_bound & data <= upper_bound);使用四分位数方法检测异常值
  1. 数据分析方法
  • 描述统计
  % 计算数据的描述统计量data = [1, 2, 3, 4, 5];mean_value = mean(data); % 均值median_value = median(data); % 中位数std_dev = std(data); % 标准差
  • 回归分析
  % 线性回归分析x = [1, 2, 3, 4, 5]';y = [2, 4, 6, 8, 10]';coeffs = polyfit(x, y, 1); % 线性回归系数y_pred = polyval(coeffs, x); % 预测值
  • 时间序列分析
  % 简单的时间序列绘图time = 1:10;values = rand(1, 10);plot(time, values);xlabel('Time');ylabel('Values');

数据分析函数总结

分析方法函数说明
描述统计meanmedianstd计算均值、中位数、标准差
回归分析polyfitpolyval进行线性回归分析
时间序列分析plot绘制时间序列图表

3. 数据可视化

        数据可视化是数据分析的一项重要技能,Matlab提供了强大的绘图功能,支持多种类型的图形和图表。

  1. 基本绘图函数
  • 绘制折线图
  % 绘制折线图x = 1:10;y = rand(1, 10);plot(x, y);xlabel('X Axis');ylabel('Y Axis');title('Line Plot');
  • 绘制散点图
  % 绘制散点图x = rand(1, 50);y = rand(1, 50);scatter(x, y);xlabel('X Axis');ylabel('Y Axis');title('Scatter Plot');
  • 绘制柱状图
  % 绘制柱状图data = randi(10, 1, 10);bar(data);xlabel('Category');ylabel('Value');title('Bar Plot');

基本绘图函数总结

图表类型函数示例说明
折线图plotplot(x, y)绘制折线图
散点图scatterscatter(x, y)绘制散点图
柱状图barbar(data)绘制柱状图
  1. 高级绘图功能

        在处理复杂的数据集时,有时需要在同一图中展示多个子图或者组合不同类型的图表,Matlab提供了多种高级绘图功能。

  1. 子图

        使用 subplot 函数可以在同一图形窗口中绘制多个子图,每个子图可以独立设置其轴和标签。

% 使用subplot绘制多个子图
x = 1:10;
y1 = rand(1, 10);
y2 = rand(1, 10) * 2;
y3 = rand(1, 10) * 3;figure; % 创建一个新的图形窗口subplot(3, 1, 1); % 创建第一个子图,占据3行中的第1行
plot(x, y1);
title('Subplot 1');subplot(3, 1, 2); % 创建第二个子图,占据3行中的第2行
plot(x, y2);
title('Subplot 2');subplot(3, 1, 3); % 创建第三个子图,占据3行中的第3行
plot(x, y3);
title('Subplot 3');
  1. 双Y轴图

        有时需要在同一张图中展示两个不同范围的数据集,可以使用 yyaxis 函数创建双Y轴图。

% 创建双Y轴图
x = 1:10;
y1 = rand(1, 10);
y2 = rand(1, 10) * 100;figure; % 创建一个新的图形窗口yyaxis left; % 创建左Y轴
plot(x, y1);
ylabel('Left Y-Axis');yyaxis right; % 创建右Y轴
plot(x, y2);
ylabel('Right Y-Axis');
  1. 绘制3D图

        Matlab提供了各种函数用于绘制三维图形,如 plot3meshsurf 等。

% 绘制3D线图
t = 0:pi/50:10*pi;
x = sin(t);
y = cos(t);
z = t;
plot3(x, y, z);
title('3D Line Plot');
xlabel('X');
ylabel('Y');
zlabel('Z');% 绘制3D网格图
[X, Y] = meshgrid(-5:0.5:5, -5:0.5:5);
Z = X.^2 + Y.^2;
figure;
mesh(X, Y, Z);
title('3D Mesh Plot');% 绘制3D表面图
figure;
surf(X, Y, Z);
title('3D Surface Plot');

高级绘图功能函数总结

功能函数示例说明
子图subplotsubplot(2, 1, 1); plot(x, y1); subplot(2, 1, 2); plot(x, y2);在同一图形窗口中创建多个子图
双Y轴图yyaxisyyaxis left; plot(x, y1); yyaxis right; plot(x, y2);创建有两个Y轴的图
3D线图plot3plot3(x, y, z);绘制三维线图
3D网格图meshmesh(X, Y, Z);绘制三维网格图
3D表面图surfsurf(X, Y, Z);绘制三维表面图

数据可视化总结

        通过上述内容,我们可以更全面地了解如何在Matlab中进行数据的可视化。通过基本绘图函数和高级绘图功能,用户可以创建各种二维和三维图形,以直观的方式展示和分析数据。

数据可视化函数总结表格

图表类型函数示例说明
折线图plotplot(x, y)绘制折线图
散点图scatterscatter(x, y)绘制散点图
柱状图barbar(data)绘制柱状图
子图subplotsubplot(3, 1, 1); plot(x, y)在同一窗口中创建多个子图
子图subplotsubplot(2, 1, 1); plot(x, y1); subplot(2, 1, 2); plot(x, y2);在同一图形窗口中创建多个子图
双Y轴图yyaxisyyaxis left; plot(x, y1); yyaxis right; plot(x, y2);创建有两个Y轴的图
3D线图plot3plot3(x, y, z);绘制三维线图
3D网格图meshmesh(X, Y, Z);绘制三维网格图
3D表面图surfsurf(X, Y, Z);绘制三维表面图

五、编写脚本与函数

1. Matlab脚本和函数的区别

在Matlab中,编写代码的主要方式有脚本文件和函数文件。它们各自有不同的特点和适用场景。

  • 脚本文件:脚本文件(script)是一种简单的程序文件,包含一系列顺序执行的Matlab命令。它们不接受输入参数或返回输出参数,直接操作当前工作区中的变量。

  • 函数文件:函数文件(function)是一种更为灵活和功能强大的程序文件。它们接受输入参数,可以返回输出参数,并且在一个独立的工作空间中运行,避免与其他变量冲突。

脚本与函数对比表

特点脚本文件函数文件
输入参数
输出参数
变量作用域操作当前工作区的变量独立的工作空间
使用场景用于简单任务和调试用于较复杂的任务和模块化

2. 如何编写和运行脚本

        编写和运行脚本文件是Matlab中最基本的一种操作方式,非常适用于简单的数据处理、绘图和小规模的计算任务。

  1. 编写脚本

脚本文件包含一系列的Matlab命令,依次执行。脚本文件的扩展名为 .m,例如 myScript.m

% 创建一个名为myScript.m的脚本文件
% 内容如下:
% 计算并绘制一个正弦函数x = linspace(0, 2*pi, 100); % 生成0到2π之间的100个点
y = sin(x); % 计算正弦值plot(x, y); % 绘制正弦函数图
xlabel('x'); % 设置x轴标签
ylabel('sin(x)'); % 设置y轴标签
title('Plot of the Sine Function'); % 设置图表标题
  1. 运行脚本

        可以通过Matlab命令窗口或编辑器窗口运行脚本。以下是一些常用的方法:

  • 在命令窗口中运行
  % 假设当前工作目录下有myScript.mmyScript; % 直接输入脚本文件名并按回车键
  • 在编辑器中运行

    打开 myScript.m 文件,然后点击编辑器中的“运行”按钮。

常用脚本操作总结表

操作示例说明
创建脚本edit myScript.m在编辑器中创建或打开脚本文件
运行脚本myScript在命令窗口中运行脚本
运行脚本点击“运行”在编辑器中运行脚本

3. 如何编写和调用函数

        函数是编写Matlab程序的另一种重要方式。它们相对脚本更为灵活,适用于模块化编程、代码复用和复杂计算。

  1. 编写函数

        函数文件的扩展名同样为 .m,文件名必须与函数名相同。以下是一个简单的函数示例:

% 创建一个名为 addNumbers.m 的函数文件
% 内容如下:function sum = addNumbers(a, b)% ADDNUMBERS 计算两个数的和%   sum = ADDNUMBERS(a, b) 返回 a 和 b 的和sum = a + b; % 计算和
end
  1. 调用函数

        可以在命令窗口或其它脚本和函数中调用这个函数:

% 调用addNumbers函数
result = addNumbers(3, 5);
disp(result); % 输出结果为8
  1. 函数的输入和输出

        函数可以接受多个输入参数,并返回多个输出参数。以下是一个带有多个输入和输出参数的函数示例:

% 创建一个名为 stats.m 的函数文件
% 内容如下:function [meanVal, stdVal] = stats(data)% STATS 计算数据的均值和标准差%   [meanVal, stdVal] = STATS(data) 返回数据的均值和标准差meanVal = mean(data); % 计算均值stdVal = std(data); % 计算标准差
end

        可以在命令窗口中调用这个函数:

% 调用stats函数
data = [1, 2, 3, 4, 5];
[meanValue, stdValue] = stats(data);
fprintf('Mean: %.2f, Std Dev: %.2f\n', meanValue, stdValue);

函数操作总结表

操作示例说明
创建函数edit addNumbers.m在编辑器中创建或打开函数文件
调用函数result = addNumbers(3, 5)在命令窗口中调用函数
多个输入和输出[meanValue, stdValue] = stats([1, 2, 3, 4, 5])函数接受多个输入并返回多个输出

六、Matlab编程技巧

1. 控制结构

        控制结构是编程中非常重要的部分,决定了程序的执行流程。Matlab提供了多种控制结构,包括条件语句和循环语句。

  1. 条件语句

        条件语句用于根据不同的条件执行不同的代码块。Matlab支持 ifelseifelse 语句。

% 条件语句示例
x = 5;
if x > 0disp('x is positive');
elseif x == 0disp('x is zero');
elsedisp('x is negative');
end
  1. 循环语句

        循环语句用于重复执行代码块。Matlab支持 for 循环和 while 循环。

% for 循环示例
for i = 1:5disp(['Iteration: ', num2str(i)]);
end% while 循环示例
n = 1;
while n <= 5disp(['Count: ', num2str(n)]);n = n + 1;
end

控制结构总结表

结构类型语法示例说明
ifif condition; statements; end根据条件执行代码块
elseifelseif condition; statements可选条件
elseelse; statements其他情况
forfor index = start:increment:end; statements; end按索引重复执行代码块
whilewhile condition; statements; end在条件为真时重复执行代码块

2. 调试和优化技巧

        调试和优化是编写高效、正确的程序的重要步骤。Matlab提供了多种调试工具和代码优化方法。

  1. 调试工具
  • 设置断点

        在代码中设置断点(breakpoints)可以在特定位置暂停程序执行,便于检查变量值和代码逻辑。

% 示例:在编辑器中点击行号左侧设置断点
function y = addNumbers(a, b)y = a + b; % 设置断点检查a和b的值
end
  • 单步执行

        通过调试模式,可以逐行单步执行代码。

% 调试模式下,使用单步执行按钮
disp('Start');
x = 1:5;
y = x.^2;
disp('End');
  • 查看变量

        在调试模式下,可以查看当前变量的值和状态。

  1. 优化技巧
  • 向量化

        减少使用循环,通过向量化操作提高计算效率。

% 非向量化操作
result = zeros(1, 1000);
for i = 1:1000result(i) = i^2;
end% 向量化操作
i = 1:1000;
result = i.^2;
  • 预分配内存

        预先分配数组的内存空间,避免在循环中动态扩展数组。

% 未预分配内存的操作
for i = 1:1000result(i) = i^2;
end% 预分配内存的操作
result = zeros(1, 1000);
for i = 1:1000result(i) = i^2;
end
  • 使用高效函数

        使用Matlab内置的高效函数替代自定义的复杂代码。

% 使用内置函数sum替代自定义求和代码
data = rand(1, 1000);
total = sum(data);

调试和优化技巧总结表

工具/技巧示例说明
设置断点设置断点检查特定变量在代码行左侧点击设置断点
单步执行逐行单步执行代码调试模式,使用单步执行按钮
查看变量查看当前变量的值和状态调试模式下观察工作区变量
向量化操作result = (1:1000).^2通过向量化操作提高计算效率
预分配内存result = zeros(1, 1000);...预先分配内存空间,避免动态扩展
使用高效函数total = sum(data)使用内置的高效函数

3. 错误处理和异常捕获

        在编写程序时,处理错误和异常是保障程序稳定性的重要环节。Matlab提供了 try-catch 结构来捕获和处理异常。

  1. 基本用法
try% 可能出现错误的代码result = someRiskyFunction();
catch ME% 处理错误disp('An error occurred:');disp(ME.message);
end
  1. 详细示例

        假设我们有一个函数 divideNumbers ,它可能会抛出除零错误:

function result = divideNumbers(a, b)if b == 0error('Division by zero is not allowed.');endresult = a / b;
end% 使用try-catch捕获错误
tryresult = divideNumbers(10, 0);
catch MEdisp('An error occurred:');disp(ME.message);
end

错误处理和异常捕获总结表

操作示例说明
基本用法try; statements; catch ME; handle_error; end捕获并处理代码块中的错误
捕获特定错误if b==0; error('Division by zero...'); end抛出特定错误
获取错误信息ME.message获取错误信息

七、基本建模步骤

1. 确定建模目标

        建模的首要步骤是明确建模的目标和问题。需要回答以下几个问题:

  • 需要解决什么问题?
  • 目标是什么?
  • 期望得到什么结果?

        例如,我们希望建立一个模型来预测某城市未来几年的人口增长情况。

建模目标总结表

问题示例
模型目标预测某城市未来几年的人口增长
输入变量历史人口数据、出生率、死亡率、迁入迁出率
输出结果未来几年的预测人口

2. 数据收集与预处理

        处理数据是建模过程中非常关键的一步。需要收集干净、准确且相关的数据,并进行预处理以保证数据的质量。

  1. 数据收集

        可以从各种来源收集数据,如数据库、文件或网络。

% 示例:从Excel文件中导入历史人口数据
rawData = xlsread('population_data.xlsx');
years = rawData(:, 1); % 年份
population = rawData(:, 2); % 人口数量
  1. 数据预处理

        常见的数据预处理步骤包括处理缺失值、数据标准化等。

  • 处理缺失值
% 移除缺失值
population = population(~isnan(population));
years = years(~isnan(population));
  • 数据标准化
% 数据标准化,将数据调整为均值为0,标准差为1
meanPopulation = mean(population);
stdPopulation = std(population);
populationStandardized = (population - meanPopulation) / stdPopulation;

数据收集与预处理总结表

操作示例说明
数据导入xlsread('population_data.xlsx')从Excel文件导入数据
处理缺失值population = population(~isnan(population))移除缺失数据
数据标准化(population - meanPopulation) / stdPopulation将数据调整为均值为0,标准差为1

3. 建立数学模型

        建立数学模型是建模的核心步骤。可以选择合适的数学模型来描述和解决问题。例如,使用线性回归模型来进行人口增长预测。

  1. 线性回归模型
% 建立线性回归模型
coeffs = polyfit(years, population, 1); % 一次线性回归

模型建立总结表

模型示例说明
线性回归模型polyfit(years, population, 1)进行一次线性回归拟合

4. 模型求解与验证

        对建立好的模型进行求解,并验证其可靠性和准确性。

  1. 模型求解
% 使用线性回归模型进行预测
predictedPopulation = polyval(coeffs, years);
  1. 模型验证

        可以通过多种方法验证模型的准确性,例如,绘制实际值和预测值的对比图,计算均方误差(MSE)。

% 绘制实际值和预测值的对比图
figure;
plot(years, population, 'o', 'DisplayName', 'Actual');
hold on;
plot(years, predictedPopulation, '-', 'DisplayName', 'Predicted');
xlabel('Year');
ylabel('Population');
title('Actual vs. Predicted Population');
legend;% 计算均方误差
mse = mean((population - predictedPopulation).^2);
fprintf('Mean Squared Error: %.2f\n', mse);

模型求解与验证总结表

操作示例说明
模型求解polyval(coeffs, years)使用模型进行预测
模型验证mean((population - predictedPopulation).^2)计算均方误差(MSE)
绘图plot(years, population, 'o')绘制实际值和预测值对比图

5. 结果分析与报告

        对模型求解的结果进行分析,并编写报告进行展示。

  1. 结果分析

        通过分析模型输出的结果,可以得出有意义的结论。例如,分析某城市未来几年的人口增长趋势,预测是否会出现人口增长压力等问题。

  1. 编写报告

        将建模过程、模型结果和分析结论整理成报告进行展示。报告可以包括以下内容:

  • 研究背景和目标
  • 数据收集与处理方法
  • 模型建立与求解过程
  • 模型结果与验证
  • 结论与建议

结果分析与报告总结表

部分内容
研究背景和目标描述研究的背景和建模目标
数据收集与处理方法介绍数据的来源、收集方法和预处理步骤
模型建立与求解过程详细描述模型的建立和求解过程
模型结果与验证展示模型输出的结果,并进行准确性验证
结论与建议总结建模结论,提出相关建议

八、实例讲解

实例1:简单的线性回归模型

        线性回归是一种基本且常用的回归方法,用于预测因变量(目标变量)和一个或多个自变量之间的线性关系。

  1. 问题描述

        我们希望使用线性回归模型预测未来几年某城市的人口增长情况。我们有过去10年的历史人口数据,作为训练数据。

  1. 数据准备
% 模拟历史人口数据
years = (2010:2019)'; % 年份
population = [500, 505, 510, 520, 530, 540, 550, 560, 570, 580]'; % 人口数量,单位:千人% 展示数据
table(years, population)

数据表格

年份人口(千人)
2010500
2011505
2012510
2013520
2014530
2015540
2016550
2017560
2018570
2019580
  1. 建立线性回归模型
% 建立线性回归模型
coeffs = polyfit(years, population, 1); % 一次线性回归
  1. 模型求解与验证
% 使用线性回归模型进行预测
predicted_population = polyval(coeffs, years);% 绘制实际值和预测值的对比图
figure;
plot(years, population, 'o', 'DisplayName', '实际值');
hold on;
plot(years, predicted_population, '-', 'DisplayName', '预测值');
xlabel('年份');
ylabel('人口(千人)');
title('实际值与预测值对比');
legend;
grid on;% 计算均方误差
mse = mean((population - predicted_population).^2);
fprintf('均方误差 (MSE): %.2f\n', mse);

模型求解与验证总结表

步骤操作说明
数据准备years = (2010:2019)'; population = [...]'生成历史人口数据
模型建立coeffs = polyfit(years, population, 1)建立线性回归模型
模型求解predicted_population = polyval(coeffs, years)使用模型进行预测
模型验证mean((population - predicted_population).^2)计算均方误差,绘制对比图
  1. 结果分析

        通过对比实际值和预测值,可以观察到线性回归模型能够较好地拟合和预测人口增长趋势。因此,我们可以使用这个模型来预测未来几年的人口增长情况。

实例2:复杂的Logistic人口增长模型

        Logistic回归是一种常用的非线性回归方法,适用于描述人口增长等饱和现象。

  1. 问题描述

        我们希望建立一个Logistic人口增长模型来预测一个生态系统的种群数量变化情况,考虑到增长速率会受资源限制而逐渐减缓。

  1. 数据准备
% 模拟种群数量数据
time = (0:10)'; % 时间,单位:年
population = [2.5, 5.5, 20.1, 33.1, 52.6, 71.3, 75.2, 74.3, 73.8, 73.0, 72.1]';% 展示数据
table(time, population)

数据表格

时间(年)种群数量
02.5
15.5
220.1
333.1
452.6
571.3
675.2
774.3
873.8
973.0
1072.1
  1. 建立Logistic回归模型
% 定义Logistic函数
logistic_func = @(b, t) b(1) ./ (1 + exp(-b(2) * (t - b(3))));% 定义残差函数
residuals = @(b) population - logistic_func(b, time);% 初始猜测参数:[最大种群, 增长速率, 时间偏移]
initial_guess = [80, 0.5, 5];% 非线性最小二乘拟合
options = optimset('Display', 'off');
params = lsqnonlin(residuals, initial_guess, [], [], options);
fitted_population = logistic_func(params, time);
  1. 模型求解与验证
% 绘制实际值和拟合值的对比图
figure;
plot(time, population, 'o', 'DisplayName', '实际值');
hold on;
plot(time, fitted_population, '-', 'DisplayName', '拟合值');
xlabel('时间(年)');
ylabel('种群数量');
title('实际值与拟合值对比');
legend;
grid on;% 计算均方误差
mse = mean((population - fitted_population).^2);
fprintf('均方误差 (MSE): %.2f\n', mse);

模型求解与验证总结表

步骤操作说明
数据准备time = (0:10)'; population = [...]'生成种群数量数据
模型建立params = lsqnonlin(residuals, initial_guess)非线性最小二乘拟合,得到模型参数
模型求解fitted_population = logistic_func(params, time)使用模型进行拟合
模型验证mean((population - fitted_population).^2)计算均方误差,绘制对比图
  1. 结果分析

        通过对比实际值和拟合值,可以观察到Logistic回归模型能够较好地描述种群数量的变化趋势,尤其是在种群数量趋于饱和的时候。通过这个模型,可以进一步研究种群数量对环境资源的依赖关系,并预测未来的发展趋势。

实例总结

实例描述主要步骤
线性回归模型预测城市未来几年的人口增长数据准备,模型建立,模型求解与验证
Logistic模型预测一个生态系统的种群数量变化数据准备,模型建立,模型求解与验证

        通过这两个实例,我们可以更好地理解如何在Matlab中应用线性回归和非线性回归模型进行实际问题的建模、求解和验证。这些实例展示了从数据准备到结果分析的完整过程,帮助我们掌握有效的建模技能。

九、常用工具箱和高级话题

1. Matlab的常用工具箱介绍

        Matlab提供了丰富的工具箱来支持不同领域的应用。这些工具箱包含专门的函数和应用,帮助用户更高效地解决复杂问题。

1.信号处理工具箱

        信号处理工具箱提供了用于分析、预处理和建模信号数据的函数和应用。

  • 示例:傅里叶变换
  % 生成一个信号fs = 1000; % 采样频率t = 0:1/fs:1-1/fs; % 时间向量x = cos(2*pi*100*t) + randn(size(t)); % 信号% 计算傅里叶变换X = fft(x);% 绘制频谱n = length(x);f = (0:n-1)*(fs/n);amplitude = abs(X)/n;figure;plot(f, amplitude);xlabel('Frequency (Hz)');ylabel('Amplitude');title('Frequency Spectrum');
  1. 图像处理工具箱

        图像处理工具箱提供了用于图像增强、分析和处理的函数和应用。

  • 示例:图像过滤
  % 读取图像I = imread('example.jpg');% 创建高斯滤波器h = fspecial('gaussian', [5, 5], 2);% 应用滤波器I_filtered = imfilter(I, h);% 显示原图和滤波后图像figure;subplot(1, 2, 1);imshow(I);title('Original Image');subplot(1, 2, 2);imshow(I_filtered);title('Filtered Image');
  1. 统计与机器学习工具箱

        统计与机器学习工具箱提供了用于统计分析、数据建模和机器学习的函数和应用。

  • 示例:线性回归
  % 生成示例数据x = [1, 2, 3, 4, 5]';y = [2.2, 2.8, 3.6, 4.5, 5.1]';% 拟合线性模型mdl = fitlm(x, y);% 显示模型摘要disp(mdl);% 预测新值x_new = [1.5, 2.5, 3.5]';y_new = predict(mdl, x_new);% 显示预测结果table(x_new, y_new)

常用工具箱总结表

工具箱描述示例
信号处理工具箱分析、预处理和建模信号数据傅里叶变换
图像处理工具箱图像增强、分析和处理图像过滤
统计与机器学习工具箱统计分析、数据建模和机器学习线性回归

2. 高级话题

        除了基本的工具箱,Matlab还支持一些高级功能,如Simulink和并行计算。这些功能可以显著提升复杂系统的建模和计算效率。

  1. Simulink的基础介绍

        Simulink是一个图形化的环境,用于建模、仿真和分析动态系统。它与Matlab紧密集成,为用户提供了强大的图形建模工具。

  • 示例:简单的电路仿真
  % 打开Simulink库浏览器simulink;% 创建新模型并添加元件new_system('simple_circuit');open_system('simple_circuit');add_block('simulink/Commonly Used Blocks/Scope', 'simple_circuit/Scope');add_block('simulink/Commonly Used Blocks/Sine Wave', 'simple_circuit/Sine Wave');% 连接元件add_line('simple_circuit', 'Sine Wave/1', 'Scope/1');% 运行仿真sim('simple_circuit');
  1. 并行计算与GPU加速

        Matlab支持并行计算和GPU加速,提高大规模计算的效率。

  • 示例:并行计算
  % 启动并行池parpool;% 并行计算示例n = 1e7;A = ones(n, 1);tic;parfor i = 1:nA(i) = sqrt(i);endtoc;% 关闭并行池delete(gcp);
  • 示例:GPU计算
  % 检查是否有GPU设备if gpuDeviceCount > 0% 创建GPU数组n = 1e7;data = gpuArray.ones(n, 1);% GPU计算tic;result = arrayfun(@sqrt, data);toc;elsedisp('No GPU available.');end

高级话题总结表

高级功能描述示例
Simulink图形化建模、仿真和分析动态系统简单的电路仿真
并行计算提高大规模计算的效率并行计算示例
GPU加速利用GPU进行高效计算GPU计算示例

最后的总结

        通过这一全面的指南,我们深入探讨了Matlab 2024a的建模基础知识和应用。文章分为九个部分,涵盖了从基础到高级的内容,目的是帮助读者全面掌握Matlab的建模技能。

第1部分:Matlab简介

        我们介绍了Matlab的定义、发展历史、主要特点及其在各个领域的应用。这为读者提供了一个全面的背景知识,使他们了解为什么Matlab在科学研究和工程应用中如此重要。

第2部分:Matlab 2024a 环境

        这一部分详细讲解了Matlab 2024a的安装步骤、界面介绍以及常见工具的使用。通过这些内容,读者能够熟练地操作Matlab环境,提高工作效率。

第3部分:基本语法

        我们介绍了Matlab的基本数据类型、基本运算符与表达式,以及常用内置函数。代码示例和总结表帮助读者快速入门并掌握Matlab的基本语法。

第4部分:数据操作与可视化

        这一部分讲解了数据的导入与导出、数据处理与分析以及数据的可视化。通过丰富的代码示例,读者可以全面掌握在Matlab中处理和可视化数据的技能。

第5部分:编写脚本与函数

        我们详细介绍了脚本文件和函数文件的区别,如何编写和运行脚本,以及如何编写和调用函数。这部分内容帮助读者编写更模块化和可复用的代码。

第6部分:Matlab编程技巧

        这一部分涵盖了控制结构、调试和优化技巧,以及错误处理和异常捕获。通过这些技巧,读者能够编写更高效、可靠的代码,并提高调试和开发的效率。

第7部分:基本建模步骤

        我们分步骤讲解了建模的各个环节,包括确定建模目标、数据收集与预处理、建立数学模型、模型求解与验证以及结果分析与报告。这为读者提供了一个完整的建模流程指导。

第8部分:实例讲解

        通过线性回归模型和Logistic人口增长模型这两个具体实例,我们演示了如何应用Matlab进行实际问题的建模、求解和验证。具体的代码示例和总结表帮助读者深入理解建模过程。

第9部分:常用工具箱和高级话题

        我们介绍了Matlab的常用工具箱(如信号处理工具箱、图像处理工具箱和统计与机器学习工具箱)和一些高级功能(如Simulink和并行计算)。这些内容帮助读者拓展知识面,提升解决复杂问题的能力。

总结

        通过本文,我们希望读者能够全面掌握Matlab 2024a的建模基础知识和应用技巧。从安装和环境配置,到基本语法和数据操作,再到详细的建模步骤和实例,以及高级话题和工具箱的使用,这些内容都旨在为读者提供一个完整的学习路径,使他们能够在科学研究和工程应用中更加高效地使用Matlab。

        无论您是初学者还是有经验的使用者,这篇指南都可以作为您的参考资料,帮助提升您的Matlab技能,解决实际问题。希望本文对您的学习和工作有所帮助,祝您在Matlab的世界中一路顺利,取得更大的成就。

9d344ed1e1234807aace1895371a1263.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

23.汽水兑奖

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动&#xff0c;旨在激发青少年对学习人工智能与算法设计的热情与兴趣&#xff0c;提升青少年科学素养&#xff0c;引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/106 题目描…

Elasticsearch:Open Crawler 发布技术预览版

作者&#xff1a;来自 Elastic Navarone Feekery 多年来&#xff0c;Elastic 已经经历了几次 Crawler 迭代。最初是 Swiftype 的 Site Search&#xff0c;后来发展成为 App Search Crawler&#xff0c;最近又发展成为 Elastic Crawler。这些 Crawler 功能丰富&#xff0c;允许以…

鞠小云张霖浩闪耀北京广播电视台春晚发布会,豪门姐弟感爆棚

昨日&#xff0c;2025年北京广播电视台“追梦春晚”全国海选发布会在杭州举行&#xff0c;中国内地青年女演员鞠小云同人气幕后张霖浩&#xff0c;受主办方盛情邀请出席本次活动。从现场流露出的照片中可以看出&#xff0c;鞠小云一袭白色长裙灵动温婉素雅&#xff0c;而张霖浩…

27.机会成本

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/677 题目描述 明天有 𝑛n 门考试,今晚只…

C++——计算不同的非空子串个数

计算不同的非空子串 计算方法 这道题是我在BCSP-X小高组的题目中发现的一道 没事闲的就写了代码和思路&#xff1a; 代码 #include <iostream> #include <vector> #include <string> #include <algorithm>using namespace std;// 用于存储后缀数…

[职场] 缺点范文 #知识分享#经验分享#媒体

缺点范文 回答示范1&#xff1a; 我的公开演讲能力比较差&#xff0c;在公共场合讲话的时候我会感到紧张&#xff0c;不过谈论我熟悉的领域我会比较放松。所以当我需要做公开发言的时候&#xff0c;我必须要准备得很充分。我确实羡慕那些无论什么话题都能够高谈阔论的人。 回…

Docker与Docker-Compose详解

1、Docker是什么&#xff1f; 在计算机中&#xff0c;虚拟化(英语: Virtualization) 是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破实体结构间的不可切割的障碍&…

【SpringBoot + Vue 尚庭公寓实战】基本属性接口实现(七)

【SpringBoot Vue 尚庭公寓实战】基本属性接口实现&#xff08;七&#xff09; 文章目录 【SpringBoot Vue 尚庭公寓实战】基本属性接口实现&#xff08;七&#xff09;1、保存或更新属性名称2、保存或更新属性值3、查询全部属性名称和属性值列表4、根据ID删除属性名称5、根据…

QSS 自定义QCheckBox

Qt Style Sheets are a powerful mechanism that allows you to customize the appearance of widgets . 简述 QCheckBox支持盒子模型。子控件::indicator可以定义指示器样式。默认情况下指示器在内容矩形框的左上角。属性spacing指定指示器和文本之间的间距。 效果 样式表 …

内网穿透的方式有哪些——快解析的优势

外网穿透内网技术&#xff0c;即内网映射&#xff0c;是把目标本地内网地址和端口发布到互联网&#xff0c;是一种由内网开放到外网的权限操作。那么&#xff0c;内网穿透的方法有哪些呢&#xff1f;做映射外网的方法。需要结合自己本地网络环境和应用场景来实施。这里分享三种…

OpenGauss数据库-5.数据更新

第1关&#xff1a;插入数据 gsql -d postgres -U gaussdb -W "passwd123123" create table student (id integer primary key,name char(20),age integer ); insert into student values(1,"lily",20),(2,lily,21),(3,marry,19); 第2关&#xff1a;删除数…

汇编:数组定义数据填充

数组的定义 在32位汇编语言中&#xff0c;定义数组时&#xff0c;通常使用定义数据指令&#xff08;如 DB, DW, DD,DQ &#xff09;和标签来指定数组的名称和内容。DB定义字节数组&#xff08;每个元素占1字节&#xff09;、DW定义字数组&#xff08;每个元素占2字节&#xff…

Java学习 - MyBatis - 初识MyBatis

前言 什么是持久化 持久化是将程序数据在持久状态和瞬时状态间转换的机制&#xff0c;将数据保存到可永久保存的存储设备中。最常见的就是将内存中的对象存储在数据库中&#xff0c;或者存在磁盘文件、XML 数据文件中等等。其中&#xff0c;文件 IO 属于持久化机制&#xff0…

【实战JVM】-实战篇-06-GC调优

文章目录 1 GC调优概述1.1 调优指标1.1.1 吞吐量1.1.2 延迟1.1.3 内存使用量 2 GC调优方法2.1 发现问题2.1.1 jstat工具2.1.2 visualvm插件2.1.3 PrometheusGrafana2.1.4 GC Viewer2.1.5 GCeasy 2.2 常见GC模式2.2.1 正常情况2.2.2 缓存对象过多2.2.3 内存泄漏2.2.4 持续FullGC…

SpringBoot个人网盘系统-计算机毕业设计源码92922

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势或改善自身的缺点&#xff0c;互联网的发展文件管理带来了福音。个人网盘系统是以实际运用为开发背景&#xff0c;运用软件工程原理和…

⌈ 传知代码 ⌋ 【CLIP】文本也能和图像配对

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

Github 2024-06-10 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目2Go项目2PHP项目1Blade项目1TypeScript项目1Lua项目1Dart项目1Swift项目1Cuda项目1Python项目1MDX项目1Ventoy: 100%开源的可启动USB解决方…

超越出身与学府:揭秘成功者共有的七大特质

在当今多元化的世界里&#xff0c;个人成功的故事如同繁星点点&#xff0c;照亮了无数追梦者的前行之路。新东方创始人俞敏洪先生曾深刻地指出&#xff0c;真正的成功并不取决于家庭背景的显赫与否&#xff0c;也不在于就读大学的名气大小&#xff0c;而是深深植根于个人内在的…

VMware Workstation虚拟机固定IP配置(主机互通、外网可访问)

VMware Workstation虚拟机固定IP配置 环境问题配置过程配置虚拟机网络适配器配置虚拟机网络配置虚拟网卡网络适配器配置虚拟机固定IP 结果验证结束语参考 环境 主机&#xff1a;Windows 11 VMware Workstation: 17.5.2 虚拟机&#xff1a;Ubuntu 24.02 LTS 注&#xff1a; 主…

DeepSpeed Huggingface模型的自动Tensor并行

推理阶段。在后台&#xff0c;1. DeepSpeed会把运行高性能kernel(kernel injection)&#xff0c;加快推理速度&#xff0c;这些对用户是透明的&#xff1b; 2. DeepSpeed会根据mp_size来将模型放置在多个GPU卡上&#xff0c;自动模型并行&#xff1b; import os import torch …