MATLAB教程

目录

  • 前言
  • 一、MATLAB基本操作
    • 1.1 界面简介
    • 1.2 搜索路径
    • 1.3 交互式命令操作
    • 1.4 帮助系统
  • 二、MATLAB语言基础
    • 2.1 数据类型
    • 2.2 MATLAB运算
      • 2.2.1 算数运算
      • 2.2.2 关系运算
      • 2.2.3 逻辑运算
    • 2.3 常用内部函数
    • 2.4 结构数据与单元数据
  • 三、MATLAB程序设计
    • 3.1 M文件
    • 3.2 函数文件
    • 3.3 程序控制结构
      • 3.3.1 循环结构
      • 3.3.2 选择结构
      • 3.3.3 流程控制语句
    • 3.4 文件操作
    • 3.5 程序调试与优化
  • 四、矩阵运算
    • 4.1 矩阵的表示
    • 4.2 矩阵的代数运算
    • 4.3 稀疏矩阵
  • 五、数值运算
    • 5.1 多项式计算
    • 5.2 插值与拟合
    • 5.3 数值微积分
    • 5.4 方程数值
    • 5.5 数据统计分析
  • 六、符号运算
    • 6.1 符号计算基础
    • 6.2 符号微积分
    • 6.3 方程符号
  • 七、数据可视化
    • 7.1 二维图形
    • 7.2 三维图形
    • 7.3 图像处理
    • 7.4 绘图工具简介
  • 八、Simulink系统仿真
    • 8.1 Simulink基本操作
    • 8.2 系统仿真的建立与分析
    • 8.3 子系统的创建与仿真
    • 8.4 S函数的设计与应用
  • 补充

前言

  MATLAB是1984年由美国MathWorks公司推出,一种交互式的以矩阵为基础的系统计算平台,它用于科学和工程的计算与可视化。本文以MATLAB2023a为例,主要介绍MATLAB的常规使用,如数值计算、符号计算、数据可视化与SIMULINK动态仿真功能。本文不对GUI功能介绍


一、MATLAB基本操作

1.1 界面简介

在这里插入图片描述
  打开MATLAB,主要会有以下几个区域。如果窗口消失可以点击主页->布局->默认,来恢复

序号名称功能
菜单栏
当前文件夹即工作空间路径
编辑器可以进行脚本编辑
命令行窗口敲命令的地方
工作区可以查看执行的变量

1.2 搜索路径

  当用户在MATLAB命令窗口输入一条命令后,MATLAB按照一定次序寻找相关的文件。用户可以将自己的工作目录列入MATLAB搜索路径,从而将用户目录纳入MATLAB系统统一管理。设置搜索路径的方法有:

  1. 用path命令设置搜索路径。例如,将用户目录d:\mydir加到搜索路径下,可在命令窗口输入命令:
path(path,’d:\mydir’)
  1. 用对话框设置搜索路径。点击主页->环境->设置路径命令按钮,或窗口执行pathtool命令,将出现“设置路径”对话框,如图:
    在这里插入图片描述

1.3 交互式命令操作

  命令行以Enter键结束,但是一行也可以输入多条命令。命令之间用,分隔,如果用;分隔或者结尾,则不会运行。如果命令太长需要换行,可以在第一行末尾添加...,再按Enter键换行。在MATLAB命令后面可以用%添加注释。如下:

>> a=1,b=2;c=...
4%注释

  命令窗的常用控制指令:

指令含义指令含义
cd设置当前工作目录exit关闭/退出 MATLAB
clf清除图形窗quit关闭/退出 MATLAB
clc清除指令窗中显示内容more使其后的显示内容分页进行
clear清除MATLAB工作空间中保存的变量return返回到上层调用程序;结束键盘模式
dir列出指定目录下的文件和子目录清单type显示指定M文件的内容
edit打开M文件编辑器which指出其后文件所在的目录

  命令行编辑常用按键:

键名功能键名功能
↑ \uparrow 前寻式调回已输入过的命令PgUp前寻式翻滚一页
↓ \downarrow 后寻式调回已输入过的命令PgDn后寻式翻滚一页
← \leftarrow 在当前行中左移光标Home将光标移到当前行首端
→ \rightarrow 在当前行中右移光标End将光标移到当前行未尾
Del删除光标右边的字符Backspace删除光标左边的字符
Esc删除当前行的全部内容Ctrl+C中断一个MATLAB任务

1.4 帮助系统

  点击主页->按钮?,或者在命令行输入doc,打开帮助窗口,可以搜索和查看所有的帮助文档,还能运行有关的演示程序。还可以使用helplookfor两个命令

  1. help命令可以显示该函数的帮助说明
>> help magic
  1. lookfor命令可以进行关键字搜索
>> lookfor inverse

二、MATLAB语言基础

2.1 数据类型

在这里插入图片描述

  1. 整型
      这个学过C语言的很好理解,无符号就是不带负数,后面的数字就是位数
  2. 浮点型
      与C语言一样,有单精度single与双精度double之分,单精度在内存中占4个字节,双精度占8个字节
  3. 常量与变量
      常量是程序语句中取不变值的那些量,变量是在程序运行中其值可以改变的量。常用预定义变量:
符号含义符号含义
ans计算结果的默认赋值变量nargin函数输入参数个数
eps容差变量nargout函数输出参数个数
pi圆周率realmin最小浮点数
i、j虚数realmax最大浮点数
inf无穷大lasterr存放最新的错误信息
nan不定式,表示非数值量lastwarn存放最新的警告信息
  1. 字符串
      字符串是用单引号括起来的字符序列,MATLAB将字符串当作一个行向量,每个元素对应一个字符。注意,如果字符串里有单引号则需要两个单引号表示。
>> ch='ABc123d4e56Fg9';
>> length(ch)          %统计个数

2.2 MATLAB运算

2.2.1 算数运算

运 算 符名 称示 例法则或使用说明
+C=A+B矩阵加法法则,即 C(i,j)=A(i,j)+B(i,j)
C=A-B矩阵减法法则,即 C(i,j)=A(i,j)-B(i,j)
∗ * C=A*B矩阵乘法法则
/右除C=A/B定义为线性方程组 XB=A 的解,即 C=A/B= AB-1
\左除C=A\B定义为线性方程组 AX=B 的解,即 C=A\B= A-1B
^乘幂C=A^BA、B 其中一个为标量时有定义
共轭转置B=A’B 是 A 的共轭转置矩阵
.*数组乘C=A.*BC(i,j)=A(i,j)*B(i,j)
./数组右除C=A./BC(i,j)=A(i,j)/B(i,j)
.\数组左除C=A.\BC(i,j)=B(i,j)/A(i,j)
.^数组乘幂C=A.^BC(i,j)=A(i,j)^B(i,j)
.’转置A.’将数组的行摆放成列,复数元素不做共轭

2.2.2 关系运算

运算符名称示 例
<小于A<B
<=小于等于A<=B
>大于A>B
>=大于等于A>=B
==恒等于A==B
~=不等于A~=B

2.2.3 逻辑运算

运算符名 称示 例
&A&B
|A|B
~A
&&先决与A&&B
||先决或A||B

2.3 常用内部函数

  函数最一般的引用格式是:函数名(参数 1,参数 2,…)

  1. 常用数学函数
函数符号名称或功能函数符号名称或功能
sin正弦sinh/asinh双曲正弦/反双曲正弦
cos余弦cosh/acosh双曲余弦/反双曲余弦
tan正切tanh/atanh双曲正切/反双曲正切
asin反正弦log2以 2 为底的对数
acos反余弦ln以 e 为底的对数
atan反正切sign符号函数
abs求绝对值或复数的模log10以 10 为底的对数
sqrt开平方round四舍五入并取整
angle求复数相角fix向最接近 0 方向取整
real求复数实部floor向接近-∞方向取整
imag求复数虚部ceil向接近+∞方向取整
conj求复数的共轭rem(a,b)求 a/b 的有符号余数
exp自然指数mod(c,m)求 c/m 的正余数
rem求余mod求模
factorial阶乘randperm生成任意排列
  1. 关系运算函数
函数含义
all若向量的所有元素非零,则结果为1,否则为0
any若向量中任何一个元素非零,则结果为1,否则为0
exist检查变量在工作空间中是否存在,若存在,则结果为1,否则为0
find找出向量或矩阵中非零元素的位置
isempty若被查变量是空矩阵,则结果为1,否则为0
isinf若元素是±inf,则结果矩阵相应位置元素取1,否则取0
isnan若元素是 nan,则结果矩阵相应位置元素取1,否则取0
isfinite若元素值大小有限,则结果矩阵相应位置元素取1,否则取0
isinteger若被查变量是整型,则取 1,否则取 0
isnumeric若被查变量是数值型,则取1,否则取0
isreal若被查变量是实数,则取1,否则取0
isfloat若被查变量是浮点型,则取1,否则取0
>> A=[4,-65,-54,0,6;56,0,67,-45,0];
>> k=find(A>4)

2.4 结构数据与单元数据

  1. 结构数据
      结构数据类型吧一组类型不同而逻辑上相关的数据组成一个有机的整体,类似C语言结构体,相关函数如下:
函 数功 能
struct创建结构数组
isstruct判定是否为结构数组,若是,其值为真
fieldnames获取结构数组域名
setfield设定域值
getfield获取域值
isfield判定是否在结构数组中,若是,其值为真
rmfield删除结构数组中的域
orderfield域排序
%格式:结构矩阵元素.成员名=表达式
>> student(2).number='20050731026';
  1. 单元数据
      与结构数据类似,不同的是结构矩阵各个元素下有成员,每个成员有自己的名字
函 数功 能
celldisp显示细胞数组所有元素的内容
iscell判定是否为细胞数组,若是为真
iscellstr判定是否为字符型细胞数组,若是为真
cellstr将字符型数组转换成字符型细胞数组
char将字符型细胞数组转换成字符型数组
cell2struct将细胞数组转换成结构数组
struct2cell将结构数组转换成细胞数组
mat2cell将普通数组转换成细胞数组
cell2mat将细胞数组转换成普通数组
num2cell将数值数组转换成细胞数组
>> b = {10,'liu',[11,21];11,'li',[13,24]}

三、MATLAB程序设计

3.1 M文件

  M文件就是以.m为扩展名的文本文件,它有两种类型:脚本(Script)和函数文件(Function),主要区别如下:

  • 脚本文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可返回输出参数。
  • 脚本文件对 MATLAB 工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。
  • 脚本文件可以直接运行,在 MATLAB 命令行窗口输入脚本文件的名字,就会顺序执行脚本文件中的命令,而函数文件不能直接运行,要以函数调用的方式来调用它。
  1. M文件的创建
    方式一:点击主页->新建
    方式二:命令行输入edit 文件名

  2. M文件的调用
      以脚本文件为例,输入以下内容并保存为exch.m文件

clear;
a=1:10;
b=[11,12,13,14;15,16,17,18];
c=a;a=b;b=c;
a
b

  然后在命令行输入exch,MATLAB就会自动运行脚本。注意搜索路径的配置
在这里插入图片描述

3.2 函数文件

  1. 基本结构与调用
      函数文件由function语句引导,结构如下:
function [输出形参表]=函数名(输入形参表)
%注释说明
函数体语句

    调用格式如下:

[输出参数列表]=函数名(输入参数列表)
  1. 全局变量与局部变量
    局部变量:存在于函数空间内部的中间变量,产生于函数的运行过程中,影响范围也仅限于函数本身。
    全局变量:可定义为不同函数空间和基本空间共享的同一变量,是函数间传递信息的一种手段。习惯上将全局变量定义为大写字母。全局变量用global定义,格式如下:
global 变量名
  1. 全局变量应用示例
    先建立函数文件wadd.m,该函数将输入的参数加权相加
function f=wadd(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;

  在命令行窗口中输入命令并得到输出结果

>> global ALPHA BETA
>> ALPHA=1;
>> BETA=2;
>> s=wadd(1,2)

在这里插入图片描述

3.3 程序控制结构

  程序的控制结构有3种:顺序结构、循环结构和选择结构。其中顺序结构就是指程序里的语句从上往下按顺序执行。

3.3.1 循环结构

  MATLAB提供两种循环结构语句:for语句与while语句

  1. for语句
      如果可以确认循环次数用for循环,格式如下:
for 循环遍历=表达式1:表达式2:表达式3
	循环体语句
end
  • 表达式1的值为循环控制变量的初值;
  • 表达式2的值为步长,省略时,步长为1;
  • 表达式3为循环控制变量的终值。
  1. while语句
      while语句通过判断循环条件是否满足来决定是否继续的循环结构,格式如下:
while 条件
	循环体语句
end

3.3.2 选择结构

  MATLAB实现条件结构语句:if语句、switch语句和try语句

  1. if语句
if 条件1
	语句组
elseif 条件2
	语句组
	...
else
	语句组
end
  1. switch语句
switch 表达式
	case 表达式1
		语句1
	case 表达式2
		语句2
		...
	case 表达式n
		语句n
	otherwise
		语句n+1
end
  1. try语句
      try语句为开发人员提供了一种捕获错误的机制
try
	语句1
catch
	语句2
end

3.3.3 流程控制语句

  • break语句:终止本层for或while循环,跳转到本层循环结束语句end的下一条语句
  • continue语句:跳过其后的循环体语句,进行下一次循环
  • return语句:终止被调用函数的运行,返回到调用函数
  • pause语句:
    • pause:暂停程序运行,按任意键继续
    • pause(n):程序暂停运行n秒后继续
    • pause on/off:允许/禁止其后的程序暂停

3.4 文件操作

  1. 常用的数据输入输出函数如下:
函 数功 能
input键盘输入语句
disp屏幕输出语句
save/loadM数据文件的存储/加载
fprintf/fscanf格式化文本文件的存储/读取
fwrite/fread二进制数据文件的存储/读取
fgetl/fgets数据文件行存储/读取
format数据输出格式
  1. 文件操作函数
    在这里插入图片描述
    在这里插入图片描述

3.5 程序调试与优化

  1. 程序的调试
>> help debug

  常用的调试有:

函数名作用
dbstop在程序适当位置设置断点
dbclear清除用dbstop函数设置的断点
dbcont从断点处恢复程序的执行
dbstep执行多行语句后返回调试模式
dbquit退出调试模式

  也可以利用调试工具,打开.m文件时,在编辑器->运行/继续里可以对断点进行操作,也可以点击前面序号设置/清除断点
在这里插入图片描述

  1. 程序性能分析
      可以利用探查器(Profiler)、tic函数和toc函数来分析程序各环节的耗时情况。在命令窗口输入以下命令:
>> profile on
文件名
>> profile viewer

在这里插入图片描述

  1. 程序优化
    (1)采用向量化运算
    (2)预分配内存空间
    (3)减少运算强度

四、矩阵运算

4.1 矩阵的表示

  矩阵的所有元素必须放在方括号([])内,同行的元素之间需用逗号或空格隔开, 矩阵的行与行之间用分号或回车符分隔;

  1. 矩阵的建立
  • 直接输入法
>> A=[1 2 3;4 5 6]
  • 拼接法
>> A=[1 2 3;4 5 6;7 8 9];B=[9 8;7 6;5 4];
>> E=[A,B]
  • 抽取法
>> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16];
>> B=A(1:3,2:3);       %取矩阵A行数为1~3,列数为2~3元素构成子矩阵
>> C=A([1 3],[2 4]);  %取矩阵A行数为1、3,列数为2、4元素构成子矩阵
  • 函数法
函 数功 能
rand(m,n)生成取值在0~1之间满足均匀分布的随机矩阵
randn(m,n)生成满足正态分布的随机矩阵
zeros(m,n)生成 m×n 阶的全 0 矩阵
ones(m,n)生成 m×n 阶的全 1 矩阵
eye(m,n)生成 m×n 阶的单位矩阵
magic(n)生成魔方就诊
vander([a,b,c…])生成范德蒙矩阵
hilb(n)/invhilb(n)希尔伯特矩阵的生成和求逆
toeplitz(x,y)托普利兹矩阵
compan§多项式p的伴随矩阵
pascal(n)帕斯卡矩阵
  • 拼接函数和变形函数法

cat函数的使用格式是:cat(n,A1,A2,A3,…),
  n=1时,表示沿行方向拼接;
  n=2时,表示沿列方向拼接。
repmat函数的使用格式是:repmat(A,m,n…),
  m和n分别是沿行和列方向重复拼接矩阵A的次数。
变形函数reshape格式:reshape(A,m,n)

  1. 向量
  • 向量包括行向量和列向量。一个n维的行向量是一个1×n阶的矩阵,而列向量则当成n×1阶的矩阵。利用冒号表达式可以创建向量,创建从n1开始,步长为step,n2结束的行向量格式如下:
x = n1:step:n2
  • 还可以使用linspace函数产生行向量,创建从n1开始,到n2结束,有n个元素的线性分隔行向量,格式如下:
x=linspace(n1,n2,n)
  1. 矩阵元素的引用
      矩阵元素通过下标引用,如**A(3,2)**表示A矩阵第3行第2列。其他相关函数如下:
函数作用
size返回矩阵各方向的长度
length返回矩阵各方向中的最长长度
sub2ind/ind2sub转换矩阵的序号与下标
reshape将矩阵组成其他排列的二维矩阵

4.2 矩阵的代数运算

  矩阵的算数运算就是使用2.2.1小节的算术运算符,本小节主要介绍矩阵相关函数

  1. 矩阵变换
函数作用
diag(A)产生对角阵
triu(A)/tril(a)取上下三角阵
A.'/transpose(A)非共轭矩阵转置
A’/conj(A).‘/conj(A.’)共轭转置(实矩阵与非共轭没区别
rot90(A,k)将矩阵A逆时针旋转90°
fliplr(A)将矩阵A左右翻转
flipud(A)矩阵上下翻转
inv(A)求A的逆矩阵
pinv(A)广义逆矩阵
  1. 矩阵求值
函数作用
det(A)A矩阵对应行列式的值
rank(A)矩阵的秩
trace(A)矩阵的迹
norm(V,1)V的1-范数
norm(V)/norm(V,2)V的2-范数
norm(V,inf)V的∞范数
cond(A)A的条件数
[X,λ]=eig(A)X为A的特征向量,λ为A的特征值
sqrtm(A)矩阵的开方运算
expm(A)指数运算
logm(A)对数运算

4.3 稀疏矩阵

  一个m×n的矩阵完全存储需要占据很大的空间,此时如果该矩阵含有大量零元素和少量非零元素,就可以用稀疏存储方式,设
A = [ 1 0 0 0 0 4 0 0 2 0 0 7 ] A= \begin{bmatrix} 1 & 0 &0&0 \\ 0 & 4&0&0 \\2&0&0&7 \end{bmatrix} A= 102040000007
  则A的稀疏存储方式:(1,1),1,(3,1),2,(2,2),4,(3,4),7

  1. sparse创建稀疏矩阵
    (1)S=sparse(A):将满矩阵A转化为稀疏矩阵S
    (2)S=sparse(m,n):用来产生m×n阶全0矩阵
    (3)S=sparse(m,n,A):建立一个m行、n列并以A为稀疏元素的稀疏矩阵
  2. spdiags创建对角稀疏矩阵
    (1)[B,d]=spdiags(A):从m×n阶矩阵A中抽取所有非零对角线上元素。B是min(m,n)×p阶矩阵,列向量为A中p个非零对角线。d是p×1阶矩阵,指出A中非零对角线的编号。
    (2)B=spdiags(A,d):从m×n阶矩阵A中抽取指定编号d的对角线元素。
    (3)A=spdiags(B,d,A):用矩阵B的列向量代替矩阵A中被d指定的对角线元素。
    (4)A=spdiags(B,d,m,n):用矩阵B的列向量生成m×n阶稀疏矩阵A,并放置在d指定的对角线上

五、数值运算

5.1 多项式计算

5.2 插值与拟合

5.3 数值微积分

5.4 方程数值

5.5 数据统计分析

六、符号运算

6.1 符号计算基础

  符号对象:是一种存储了符号字符串表示的复杂数据结构。包括符号常量、符号变量、符号表达式和符号矩阵或数组。
  MATLAB使用sym函数和syms命令建立符号对象,sym一次只能定义一个符号变量,syms一次可以定义多个如:

>> t=sym(2);  %定义符号常量t
>> t+1/2

>> syms a b pi
>> sin(pi/3)+a*a+b*b

  符号变量的基本运算与数值计算没有太多区别。这里简单介绍一下相关函数:

函数功能
assume设置值域
isequaln判断符号对象是否一致
numden提取符号表达式的分子和分泌
factor因式分解
expand展开符号表达式
collect对符号表达式合并同类项
coeffs提取表达式系数
simplify对符号表达式进行简化
eval将符号表达式转成数值表达式
sym2poly将符号多项式转换为多项式系数向量

6.2 符号微积分

  1. 符号极限
      使用limit(f,x,a)求当变量x趋于a时f的极限值
>> f=x*(sqrt(x^2+1)-x);
>> limit(f,x,inf,'left') %left表示求左极限
  1. 其他相关函数
函数功能
diff符号微分
int符号积分
taylor泰勒展开
fourier傅里叶变换
ifourier傅里叶反变换
laplace拉普拉斯变换
ilaplace拉普拉斯反变换
ztransZ变换
iztransZ反变换

6.3 方程符号

  1. solve代数方程求解
      solve(s,v)表示求解表达式s的代数方程,求解变量是v
    { u 3 + v 3 = 98 u + v = 2 \left\{ \begin{array}{c} u^3 + v^3 =98 \\ u+v=2 \end{array} \right. {u3+v3=98u+v=2
>> syms u v
>> [u,v]=solve([u^3+v^3-98,u+v-2],[u,v])               %解方程组
  1. dsolve求解常微分方程
      dsolve(e,c,v)表示常微分方程e在初值条件c下的特解,v是方程自变量
    d y d x = x 2 + y 2 2 x 2 \frac{{\rm d}y}{{\rm d}x} = \frac{x^2+y^2}{2x^2} dxdy=2x2x2+y2
>> y=dsolve('Dy-(x^2+y^2)/x^2/2','x')     %方程的右端为0时可以不写

七、数据可视化

7.1 二维图形

7.2 三维图形

7.3 图像处理

7.4 绘图工具简介

八、Simulink系统仿真

8.1 Simulink基本操作

8.2 系统仿真的建立与分析

8.3 子系统的创建与仿真

8.4 S函数的设计与应用


补充

有关MATLAB其他或者具体信息参考:MATLAB中国官网

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1688商品详情API接口采集商品上货

阿里巴巴1688平台并没有直接公开商品详情API接口供普通用户或开发者进行商品采集和上货。1688平台主要服务于批发和采购业务&#xff0c;其API服务通常面向的是有深度合作关系的商家或开发者&#xff0c;且需要经过申请和审核流程。 请求示例&#xff0c;API接口接入Anzexi58 …

【重温设计模式】观察者模式及其Java示例

观察者模式的概念和原理 在编程世界中&#xff0c;设计模式作为一种解决问题的策略&#xff0c;它的存在就如同人类语言中的成语&#xff0c;是一种经过时间考验的有效解决方案。 观察者模式就是其中一种重要的设计模式&#xff0c;它在很多场景中都有着广泛的应用。那么&…

【开发】Redis 的理解与数据存储格式

目录 相关传送门 1. NOSQL和关系型数据库比较 2. 主流的NOSQL产品 3. Redis的理解 4. redis数据存储格式 4.1 String 4.2 Hash 4.3 List 4.4 Set 4.5. sorted_set 注&#xff1a;手机端浏览本文章可能会出现 “目录”无法有效展示的情况&#xff0c;请谅解&#xf…

旅游行业分析及媒体邀约资源汇总

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 酒店旅游行业分析及媒体邀约资源汇总是两个相对独立但又相互关联的领域。下面将分别对这两个方面进行概述。 酒店旅游行业分析 1. 市场概况 市场规模&#xff1a;评估市场的总价值、增长…

云原生(四)、Docker-Compose

Docker-Compose Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用一个简单的 YAML 文件来配置应用程序的服务、网络和卷&#xff0c;从而使得在不同环境中轻松部署应用程序变得更加简单和可靠。 Docker Compose 主要由以下几个核心组件组成&#xf…

【SQL】1341. 电影评分(分组求解+合并union all;order by 多字段排序)

前述 知识点回顾&#xff1a;union all和union的区别 Union&#xff1a;对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;同时进行默认规则的排序&#xff1b;Union All&#xff1a;对两个结果集进行并集操作&#xff0c;包括重复行&#xff0c;不进行排序&…

主机与windows虚拟机远程桌面实现方法

目录 一、虚拟机相关配置1. 配置虚拟机网络2. 打开虚拟机远程桌面功能3. 配置虚拟机用户与分组 二、主机相关配置 当无法通过共享文件夹实现主机与windows虚拟机文件共享时&#xff0c;可以通过主机与虚拟机远程桌面的方法实现文件的共享传输。本文主要介绍主机与虚拟机远程桌面…

Django 应用的路由访问

项目url 添加应用访问路径 from django.contrib import admin from django.urls import path, include from app1 import viewsurlpatterns [path(admin/, admin.site.urls),path(app1/, include(app1.urls)), # 在主项目添加应用的所有路由路径 ] 就可以访问app1应用下的ur…

【Python】第十二章_外星人入侵_武装飞船

目录 项目概述&#xff1a; 1 项目需求分析 2 安装Pygame 3 开始游戏项目 3.1 创建Pygame窗口以及响应用户输入 3.2 设置背景色 3.3 创建设置类 4 添加飞船图像 4.1 创建Ship 类 4.2 在屏幕上绘制飞船 5 重构&#xff1a; 模块game_functions 5.1 函数check_even…

osgEarth学习笔记2-第一个Osg QT程序

原文链接 上个帖子介绍了osgEarth开发环境的安装。本帖介绍我的第一个Osg QT程序。 下载 https://github.com/openscenegraph/osgQt 解压&#xff0c;建立build目录。 使用Cmake-GUI Configure 根据需要选择win32或者x64&#xff0c;这里我使用win32. 可以看到include和lib路…

注册个人小程序

访问地址 https://mp.weixin.qq.com/ 立即注册 选择小程序 注册 填写信息 登录邮箱 访问邮箱的链接激活账号 选择个人&#xff0c;填写信息 注册完成&#xff0c;即可登录进入填写信息

数通-OSPF域间路由防环机制

1类LSA&#xff1a;用来描述路由器自身直连接口链路状态信息的&#xff08;也就是路由器连了什么&#xff09;&#xff1b; 2类LSA&#xff1a;用来描述伪节点的信息&#xff08;2类LSA不仅描述了拓扑信息&#xff0c;同时也描述了叶子信息&#xff09;&#xff1b; 3类LSA&a…

后端工程师快速使用axios

文章目录 01.AJAX 概念和 axios 使用模板目标讲解代码解析案例前端后端结果截图 02.URL 查询参数模板目标讲解案例前端后端结果截图 03.常用请求方法和数据提交模板目标讲解案例前端后端结果截图 04.axios 错误处理模板目标讲解案例前端后端结果截图 01.AJAX 概念和 axios 使用…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之一 哈哈镜效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之一 哈哈镜效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之一 哈哈镜效果 一、简单介绍 二、简单哈哈镜实现的原理 1、图像拉伸放大 2、图像缩小 三、哈哈镜 拉伸放大 代码实现 …

uniapp可视范围高度 - 用户屏幕可操作的屏幕高度 - 适用于APP、H5@公众号、纯H5@Chrome

可视范围高度 let heightPx uni.getWindowInfo().windowHeight uni.getWindowInfo().windowTop 官方手册 uni.getWindowInfo() | uni-app官网uni-app,uniCloud,serverless,uni.getWindowInfo()https://uniapp.dcloud.net.cn/api/system/getWindowInfo.html 实测数据 uni.ge…

【目标检测】2. RCNN

接上篇 【目标检测】1. 目标检测概述_目标检测包括预测目标的位置吗?-CSDN博客 一、前言 CVPR201 4经典paper:《 Rich feature hierarchies for accurate object detection and semantic segmentation》&#xff0c;https://arxiv.org/abs/1311.2524, 这篇论文的算法思想被称…

信息检索(十三):On Complementarity Objectives for Hybrid Retrieval

On Complementarity Objectives for Hybrid Retrieval 摘要1. 引言2. 相关工作2.1 稀疏和密集检索2.2 互补性 3. 提出方法3.1 Ratio of Complementarity (RoC)3.2 词汇表示&#xff08;S&#xff09;3.3 语义表示&#xff08;D&#xff09;3.4 互补目标 4. 实验4.1 实验设置4.2…

服务器病毒木马通用排查处理应急响应流程

目录 一、勒索病毒发作的特征 二、勒索病毒的应急响应 三、勒索病毒预防与事后加固 一、勒索病毒发作的特征 如果发现大量统一后缀的文件&#xff1b;发现勒索信在Linux/home、/usr等目录&#xff0c;在Windows 桌面或者是被加密文件的文件夹下。如果存在以上特…

Flutter-仿腾讯视频Banner效果

闲聊 人一旦运气差&#xff0c;喝水都能噎着。我又被发”毕业证“了&#xff0c;&#x1f62d;&#xff0c;对&#xff01;&#xff01;&#xff01;没有听错&#xff0c;发毕业证的当天上午刚讨论完需求&#xff0c;中午吃完饭&#xff0c;正常去公司前面的小公园溜达&#x…

供应链投毒预警 | 开源供应链投毒202402月报发布啦

概述 悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库&#xff0c;结合程序动静态分析方式对潜在风险的开源组件包进行动态跟踪和捕获&#xff0c;发现大量的开源组件恶意包投毒攻击事件。在2024年2月份&#xff0c;悬镜供应链安全情报中心在NPM官方仓库&#xff08;…