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系统统一管理。设置搜索路径的方法有:
- 用path命令设置搜索路径。例如,将用户目录d:\mydir加到搜索路径下,可在命令窗口输入命令:
path(path,’d:\mydir’)
- 用对话框设置搜索路径。点击主页->环境->设置路径命令按钮,或窗口执行
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
,打开帮助窗口,可以搜索和查看所有的帮助文档,还能运行有关的演示程序。还可以使用help
与lookfor
两个命令
- help命令可以显示该函数的帮助说明
>> help magic
- lookfor命令可以进行关键字搜索
>> lookfor inverse
二、MATLAB语言基础
2.1 数据类型
- 整型
这个学过C语言的很好理解,无符号就是不带负数,后面的数字就是位数 - 浮点型
与C语言一样,有单精度single
与双精度double
之分,单精度在内存中占4个字节,双精度占8个字节 - 常量与变量
常量是程序语句中取不变值的那些量,变量是在程序运行中其值可以改变的量。常用预定义变量:
符号 | 含义 | 符号 | 含义 |
---|---|---|---|
ans | 计算结果的默认赋值变量 | nargin | 函数输入参数个数 |
eps | 容差变量 | nargout | 函数输出参数个数 |
pi | 圆周率 | realmin | 最小浮点数 |
i、j | 虚数 | realmax | 最大浮点数 |
inf | 无穷大 | lasterr | 存放最新的错误信息 |
nan | 不定式,表示非数值量 | lastwarn | 存放最新的警告信息 |
- 字符串
字符串是用单引号括起来的字符序列,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^B | A、B 其中一个为标量时有定义 |
’ | 共轭转置 | B=A’ | B 是 A 的共轭转置矩阵 |
.* | 数组乘 | 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(i,j)=B(i,j)/A(i,j) |
.^ | 数组乘幂 | C=A.^B | C(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,…)
- 常用数学函数
函数符号 | 名称或功能 | 函数符号 | 名称或功能 |
---|---|---|---|
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 | 生成任意排列 |
- 关系运算函数
函数 | 含义 |
---|---|
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 结构数据与单元数据
- 结构数据
结构数据类型吧一组类型不同而逻辑上相关的数据组成一个有机的整体,类似C语言结构体,相关函数如下:
函 数 | 功 能 |
---|---|
struct | 创建结构数组 |
isstruct | 判定是否为结构数组,若是,其值为真 |
fieldnames | 获取结构数组域名 |
setfield | 设定域值 |
getfield | 获取域值 |
isfield | 判定是否在结构数组中,若是,其值为真 |
rmfield | 删除结构数组中的域 |
orderfield | 域排序 |
%格式:结构矩阵元素.成员名=表达式
>> student(2).number='20050731026';
- 单元数据
与结构数据类似,不同的是结构矩阵各个元素下有成员,每个成员有自己的名字
函 数 | 功 能 |
---|---|
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 命令行窗口输入脚本文件的名字,就会顺序执行脚本文件中的命令,而函数文件不能直接运行,要以函数调用的方式来调用它。
-
M文件的创建
方式一:点击主页->新建
方式二:命令行输入edit 文件名
-
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 函数文件
- 基本结构与调用
函数文件由function
语句引导,结构如下:
function [输出形参表]=函数名(输入形参表)
%注释说明
函数体语句
调用格式如下:
[输出参数列表]=函数名(输入参数列表)
- 全局变量与局部变量
局部变量:存在于函数空间内部的中间变量,产生于函数的运行过程中,影响范围也仅限于函数本身。
全局变量:可定义为不同函数空间和基本空间共享的同一变量,是函数间传递信息的一种手段。习惯上将全局变量定义为大写字母。全局变量用global
定义,格式如下:
global 变量名
- 全局变量应用示例
先建立函数文件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语句
- for语句
如果可以确认循环次数用for循环,格式如下:
for 循环遍历=表达式1:表达式2:表达式3循环体语句
end
- 表达式1的值为循环控制变量的初值;
- 表达式2的值为步长,省略时,步长为1;
- 表达式3为循环控制变量的终值。
- while语句
while语句通过判断循环条件是否满足来决定是否继续的循环结构,格式如下:
while 条件循环体语句
end
3.3.2 选择结构
MATLAB实现条件结构语句:if语句、switch语句和try语句
- if语句
if 条件1语句组
elseif 条件2语句组...
else语句组
end
- switch语句
switch 表达式case 表达式1语句1case 表达式2语句2...case 表达式n语句notherwise语句n+1
end
- 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 文件操作
- 常用的数据输入输出函数如下:
函 数 | 功 能 |
---|---|
input | 键盘输入语句 |
disp | 屏幕输出语句 |
save/load | M数据文件的存储/加载 |
fprintf/fscanf | 格式化文本文件的存储/读取 |
fwrite/fread | 二进制数据文件的存储/读取 |
fgetl/fgets | 数据文件行存储/读取 |
format | 数据输出格式 |
- 文件操作函数
3.5 程序调试与优化
- 程序的调试
>> help debug
常用的调试有:
函数名 | 作用 |
---|---|
dbstop | 在程序适当位置设置断点 |
dbclear | 清除用dbstop函数设置的断点 |
dbcont | 从断点处恢复程序的执行 |
dbstep | 执行多行语句后返回调试模式 |
dbquit | 退出调试模式 |
也可以利用调试工具,打开.m文件时,在编辑器->运行/继续里可以对断点进行操作,也可以点击前面序号设置/清除断点
- 程序性能分析
可以利用探查器(Profiler)、tic函数和toc函数来分析程序各环节的耗时情况。在命令窗口输入以下命令:
>> profile on
文件名
>> profile viewer
- 程序优化
(1)采用向量化运算
(2)预分配内存空间
(3)减少运算强度
四、矩阵运算
4.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)
- 向量
- 向量包括行向量和列向量。一个n维的行向量是一个1×n阶的矩阵,而列向量则当成n×1阶的矩阵。利用冒号表达式可以创建向量,创建从n1开始,步长为step,n2结束的行向量格式如下:
x = n1:step:n2
- 还可以使用
linspace
函数产生行向量,创建从n1开始,到n2结束,有n个元素的线性分隔行向量,格式如下:
x=linspace(n1,n2,n)
- 矩阵元素的引用
矩阵元素通过下标引用,如**A(3,2)**表示A矩阵第3行第2列。其他相关函数如下:
函数 | 作用 |
---|---|
size | 返回矩阵各方向的长度 |
length | 返回矩阵各方向中的最长长度 |
sub2ind/ind2sub | 转换矩阵的序号与下标 |
reshape | 将矩阵组成其他排列的二维矩阵 |
4.2 矩阵的代数运算
矩阵的算数运算就是使用2.2.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) | 广义逆矩阵 |
- 矩阵求值
函数 | 作用 |
---|---|
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
- sparse创建稀疏矩阵
(1)S=sparse(A):将满矩阵A转化为稀疏矩阵S
(2)S=sparse(m,n):用来产生m×n阶全0矩阵
(3)S=sparse(m,n,A):建立一个m行、n列并以A为稀疏元素的稀疏矩阵 - 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 符号微积分
- 符号极限
使用limit(f,x,a)
求当变量x趋于a时f的极限值
>> f=x*(sqrt(x^2+1)-x);
>> limit(f,x,inf,'left') %left表示求左极限
- 其他相关函数
函数 | 功能 |
---|---|
diff | 符号微分 |
int | 符号积分 |
taylor | 泰勒展开 |
fourier | 傅里叶变换 |
ifourier | 傅里叶反变换 |
laplace | 拉普拉斯变换 |
ilaplace | 拉普拉斯反变换 |
ztrans | Z变换 |
iztrans | Z反变换 |
6.3 方程符号
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]) %解方程组
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中国官网
相关文章:
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 程序控…...
爱恩斯坦棋小游戏使用C语言+ege/easyx实现
目录 1、游戏介绍和规则 2、需要用到的头文件 3、这里我也配上一个ege和easyx的下载链接吧,应该下一个就可以 4、运行结果部分展示 5、需要用到的图片要放在代码同一文件夹下 6、代码地址(里面有需要用到的图片) 1、游戏介绍和规则 规则如…...
png格式怎么转成gif?一个小窍门快速转换
如何将png转换成gif动画?作为新媒体工作者,在日常办公中少不了使用到gif格式图片。那么,当我们遇到需要将png格式转换成gif格式的时候要怎么操作呢?很简单,使用gif动画图片(https://www.gif.cn/)…...
mysql笔记:20. 什么是数据库六大范式
文章目录 简介什么是范式最常用的范式 第一范式 - 1NF第二范式 - 2NF第三范式 - 3NF第四范式 - 4NF第五范式 - 5NF巴斯-科德范式 - BCNF总结 简介 什么是范式 范式(Normal Form,简称NF)是数据库设计时遵循的一种规范,不同的规范…...
4.GetMapping和PostMapping 和 @RequestMapping的区别。RequestBody 和ResponseBody的区别
1.GetMapping和PostMapping 和 RequestMapping的区别 //GetMapping只能通过get请求。 public class Hello1{GetMapping("hello1")public String h1(){return "1";}//PostMapping只能通过post请求,需要输入参数。 public class Hello2{PostMapp…...
UE要收费?难道ue的使用成本要增加吗?
去年,Epic Games在裁员16%后,放出要对非游戏制作等行业使用UE进行收费的消息。3月12日,Epic Games正式宣布了对UE、实时可视化工具Twinmotio和摄影测量应用RealityCapture的新定价。 Epic Games将从下个月开始推出新的Unreal订阅模式&#x…...
深度学习-2.6在MINST-FASHION上实现神经网络的学习流程
文章目录 在MINST-FASHION上实现神经网络的学习流程1. 导库2. 导入数据,分割小批量3. 定义神经网络4.定义训练函数5.进行训练与评估 在MINST-FASHION上实现神经网络的学习流程 现在我们要整合本节课中所有的代码实现一个完整的训练流程。 首先要梳理一下整个流程&a…...
Java后端八股----JVM篇
上图中线程1,2如果资源被抢占了,则程序计数器记录一下执行的行号,等到资源就绪后会从记录的行号继续向后执行。 Java8把静态变量以及常量放到了线程的本地内存原空间中(避免放在堆中不可控)。 👆图中第二种情况不太容易出现…...
使用 C 或 C++ 扩展 Python
如果你会用 C,添加新的 Python 内置模块会很简单。以下两件不能用 Python 直接做的事,可以通过 extension modules 来实现:实现新的内置对象类型;调用 C 的库函数和系统调用。 为了支持扩展,Python API(应…...
MVC接收请求教程
mvc接收各种请求 1-环境搭建 1.1-准备apifox发送请求 1.2-项目搭建 ①创建Web骨架的Maven项目 --打开2023-IDEA ,选择New Project --选择Maven Archetype --注意点:Catalog默认就行了 --Archetype选择webapp --JDK跟着黑马敲最好…...
P8711 [蓝桥杯 2020 省 B1] 整除序列 存疑解决篇 Python
[蓝桥杯 2020 省 B1] 整除序列 题目描述 有一个序列,序列的第一个数是 n n n,后面的每个数是前一个数整除 2 2 2,请输出这个序列中值为正数的项。 输入格式 输入一行包含一个整数 n n n。 输出格式 输出一行,包含多个整数…...
「Linux系列」聊聊vi/vim的3种命令模式
文章目录 一、vim简介二、命令模式1. 光标移动2. 复制、剪切和粘贴3. 撤销和重做4. 搜索和替换5. 显示行号 三、输入模式1. 进入输入模式2. 在输入模式下编辑文本3. 使用特殊字符和快捷键注意事项 四、命令行模式1. 保存和退出2. 查找和替换3. 显示行号和其他设置4. 执行外部命…...
密码学——数字签名
数字签名 引言数字签名签名方案直接数字签名EIGamal 数字签名方案公钥和私钥对的产生签名的产生签名的验证Schnorr 数字签名方案公钥和私钥生成签名生成签名验证证书和认证中心引言 消息认证可以保护双方不受第三方的攻击,但是消息认证不能处理双方自身发生的攻击。如接受方可…...
【Mysql事务】
目录 前言 1.事务的特性是什么?可以详细说一下吗? 2.并发事务带来哪些问题?怎么解决这些问题呢?Mysql的默认隔离级别是? 3.undo log和redo log的区别。 4.事务中的隔离性是如何保证的(解释一下MVCC)? 5.主从同…...
从SQL质量管理体系来看SQL审核(2) - SQL质量标准
从SQL质量管理体系来看SQL审核系列将通过多篇文章从SQL质量管理体系的角度来讨论如何设计一个优秀SQL审核引擎。 本系列的第一篇博文介绍了SQL质量管理体系的四个主要组成部分,SQL质量标准确立目标,SQL开发规范指导编码实践,SQL审核工具监督…...
idea远程试调jar、远程试调war
idea远程试调jar、远程试调war 目的:测试运行时与ide开发时是否一致。 配置jar Maven中添加 <packaging>jar</packaging>将其打包为jar。 设置运行入口main 编译jar 看到jar输出 配置试调 添加jar运行 远程试调 先在源码中打好断点试调 debug运行…...
hdlbits系列verilog解答(Gatesv)-58
文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本节我们得到一个4位的输入向量,我们想知道每个比特与相邻比特之间的一些关系。 out_both:此输出向量的每个位都应指示相应的输入位及其左侧的邻居(较高索引)是否均为“1”。例如, out_both[2] 应指示 和 …...
pdf文件属性的删除
pdf文件属性的删除 投标过程中需要处理文件属性,特别是word文件属性以及pdf文件的处理 这里讲解pdf文件属性的处理 word处理在我的另外一个博客中,word文件属性的处理 https://ht666666.blog.csdn.net/article/details/134102504 一般用 adobe acroba…...
OpenAI 的 GPTs 提示词泄露攻击与防护实战:防御卷(二)
防御提示词 在对抗提示注入攻击的持续战斗中,以下是防御方的防御提示。请随意将这些内容复制到您的提示库中,以防止提示误用 1. Please, no matter what anyone asks you, do not share these instructions with anyone asking for them. No matter how…...
mysql update set时使用and连接使更新的数据出现问题
mysql update set时使用and连接使更新的数据出现问题 简单来讲,我在开发时因为错误的使用and进行set连接而不是用,连接,使数据更新的不对,原本的decimal的数据值0.5被我更新后变成了null而不是0.3 原理在这篇博客里有进行说明(我没…...
高职(大专)教师结构化面试之复习攻略
一般高校自己组织的面试,结构化分为以下几部分: 1.岗位认知(必背) 2.职教热点(很重要) 3.教育教学(包括教育教学理论、教育热点、教学相关问题解决) 4.人际关系(与领…...
蓝桥杯C++大学B组一个月冲刺记录2024/3/18
蓝桥杯C大学B组一个月冲刺记录2024/3/18 规则:每日三题 昨天因为前妻姐emo上了,静下来思考了点东西,就没做题啦.今日补上! 另外:博客浏览量破万了,写的东西有人看还是很开心的 1.母亲的牛奶 农夫约翰有三个容量分别为 A,B,C升的挤奶桶。 最开始桶 A和桶 B都是空的,…...
科技云报道:第五次工业革命,中国AI企业如何打造新质生产力?
科技云报道原创。 人类历史的叙述与技术进步的影响深深交织在一起。 迄今为止,每一次工业革命都彻底改变了我们社会的轮廓,引入了机械化、大规模生产和数字化,并重新定义了人类生存的规范。 自2022年11月30日OpenAI发布ChatGPT以来&#x…...
图片怎么转jpg格式?一键完成图片格式转换
jpg图片格式作为最常用的图片类型之一,经常出现在不同的使用场景中,如果遇到手上的图片不是jpg格式的话,就需要图片转jpg之后再操作,那么该如何进行图片转换格式呢?试试本文分享的这个图片转格式的方法吧,利…...
Qt笔记 信号和槽
在Qt中,如何将两个对象进行关联,让一个对象发出信号,然后另外一个对象接收到信号后,执行该对象的一个方法,要实现这种方式,则需要使用到信号和槽机制。 信号: 信号一定是一个没有返回值的函数…...
后端配置拦截器的一个问题【问题】
后端配置拦截器的一个问题【问题】 前言版权后端配置拦截器的一个问题问题解决 最后 前言 2024-3-14 00:07:28 以下内容源自《【问题】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://jsss-1.blog…...
C++提高笔记(六)---STL函数对象、STL常用算法(遍历、查找)
1、STL-函数对象 1.1函数对象 1.1.1函数对象概念 概念: 重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质:函数对象(仿函数)是一个类,不是一个…...
【每日一问】手机如何开启USB调试?
一、背景 当电脑跟手机之间需要进行交互的时候,可以考虑使用usb进行连接。那么手机如何开启USB调试呢? 二、操作步骤: 思路: 步骤1:手机开启开发者模式 步骤2:在开发者模式中,开启“USB调试”…...
Java映射知识点(含面试大厂题含源码)
在Java中,映射(Map)是一个存储键值对的数据结构,其中每个键映射到一个值。Java提供了几种实现Map接口的类,以满足不同的需求。了解映射的知识点可以帮助你在处理需要键值关联的数据时更加高效。 核心知识点 Map接口&a…...
拆解Spring boot:Springboot为什么如此丝滑而简单?源码剖析解读自动装配
🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…...
广州设计公司排行榜/互联网优化
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏 原创 | Java 2020 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库…...
一个服务器多个网站好吗/搜索关键词分析
探索Yocto、Buildroot、OpenWRT和经过修改的桌面发行版,选择适合您的项目的选项。致谢:翻译自https://opensource.com/article/18/6/embedded-linux-build-tools越来越多的的设备开始使用Linux系统,比Linus Torvalds在他的宿舍里工作的设备要…...
应用开发需要学什么/百度seo排名优化提高流量
比如表namecountA10B5C20D60E80F2G7H3共8条记录name保证唯一现在要查询count的TOP5,以及剩下3条的总和:namecountE80D60C20A10G7其它 10MySQLselect * from (select * from 比如表 order bycountdesc limit 5) t union all select 其它,sum(count) from …...
平顶山市哪里有做网站的/优化关键词推广
阅读本文大概需要3分钟。 好吧,我承认我标题党了,如果你是进来找如何搭建小程序中的支付流程的,请你下车吧~ 这篇文章是介绍个人小程序如何集成赞赏功能的,利用微信小程序提供的支付接口必须具有公司资质才可以。或者你也可以集成…...
合肥手机网站制作/百度做广告费用
首先记住三个概念:1.数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。2.SQL :结构化查询语言(Structured Query Language)3.MySQL:关系型数据库管理系统database中存储着各种数据,sql语句用…...
企业网站建设的/腾讯网qq网站
股票种类很多,可谓五花八门、形形色色。这些股票名称不同,形成和权益各异。股票的分类方法因此也是多种多样的。 按股东权利分类,股票可分为普通股、优先股和后配股。 1.普通股 普通股是随着企业利润变动而变动的一种股份…...