Matlab基础知识汇总(小白速成)

news2024/9/29 3:30:49

1.矩阵

1.矩阵运算符

运算符号说明具体表现实现
转置A.'矩阵转置
共轭转置A'复矩阵共轭转置,当A为实数矩阵时等价于A.'
加减A+B、A-B矩阵元素之间相互进行加减
数与矩阵加减K+A、K-A数与矩阵的加减操作
数乘以矩阵k*A数对矩阵中的每个元素进行相乘
矩阵相乘A * B A.*B乘法运算:点乘(对应元素相乘) 乘(矩阵相乘)
矩阵乘方A^k相当于k个A进行相乘
矩阵除法左除A\B 右除A/B相当于AX=B XA=B的解

2.特殊矩阵的生成

1.零矩阵

  • zeros(m,n) 生成m行n列的零矩阵

 

2. 1矩阵

  • ones(m,n)生成m行n列元素都为1的矩阵

 

 

3.单位阵

  • eye(n) 生成n阶单位阵

 

 

4.随机矩阵

  • rand(m,n) 生成m行n列在[0,1]上均匀分布的随机矩阵

 

 

3.矩阵处理

 

 

1.矩阵的迹(对角线之和)

  • trace(A) 返回矩阵A的迹(对角线元素的和)

 

 

2.提取对角线向量

  • diag(A) 返回矩阵A的对角线元素构成的向量

 

 

3.向量生成的对角矩阵

  • diag(x) 返回由向量x的元素构成的对角矩阵

 

 

4.提取下三角矩阵

  • tril(A) 提取矩阵A的下三角矩阵

 

 

5.提取上三角矩阵

  • triu(A) 提取矩阵A的上三角矩阵

 

 

6.矩阵上下翻转

  • flipud(A) 矩阵上下翻转

 

 

7.矩阵左右翻转

  • fliplr(A) 矩阵左右翻转

 

 

8.重排矩阵

  • reshape(A,m,n) 将矩阵A的元素重排成m行n列矩阵

 

 

4.矩阵分析

 

 

1.rank(矩阵的秩运算)

  • rank(A) 返回A的秩

 

 

2.det(矩阵的行列式运算)

  • det(A) 返回方阵A的行列式

 

 

3.inv(矩阵的逆运算)

  • inv(A) 返回A的逆矩阵

 

 

4.null(AX=0的基础解系)

  • null(A) 返回A的零矩阵的基,即AX=0的基础解系

 

 

5.orth(矩阵的正交规范基)

  • orth(A) 求A的列向量空间的正交规范基

 

6.norm(向量的范数)x

  • norm(x) 返回向量x的范数(向量“大小”的度量),即

 

 

7.norm(矩阵的范数)A

  • norm(A) 返回矩阵A的范数(矩阵“大小”的度量),即

     

8.expm(矩阵的指数函数)

  • expm(A) 返回矩阵A的指数函数,即级数和

     

     

9.矩阵的特征值以及特征向量

  • [V,D]=eig(A) V--特征向量矩阵 D--特征值的对角矩阵

 

10.magic(幻方矩阵)

例题:秩对解的影响

用矩阵除法解下列线性方程组,并判断解的意义,用矩阵乘方进行验算

  • 如果rank(A,b)==rank(A)---->方程有解

    • rank(A)==length(A) 有唯一解 (满秩)----> 可逆 <--det(A)!=0

    • rank(A)<length(A) 有无穷多解 det(A)==0---->不可逆

  • rank(A)<rank(A,b)---->方程无解

if rank(A)==rank([A,b])
    disp("方程组有解");
    %使用rref求出矩阵的最简形式(行简化阶梯型)
    simple=rref([A,b])
    if  rank(A)==length(A)
        disp("方程组有唯一解");
    else if rank(A)<length(A)
            disp("方程组有无穷多解");
        end
    end
else
    disp("方程组无解");
end

 

2.函数与图像

1.基本语句

1.if条件控制语句
if  情况1(满足情况1则会执行结果1)
    结果1
else(否则就会执行结果2)
    结果2
end
if  情况1(满足情况1则会执行结果1)
       结果1
else if 情况2(满足情况2则会执行结果2)
       结果2
else(否则执行结果3)
    结果3
end
​
2.switch选择语句
switch a(与a相比,若相同则执行对应的结果)
    case a1
        结果1
    case a2
        结果2
    case a3
        结果3
    ...
    otherwise
        结果n
end
3.try-catch语句
try
    %可能会抛出异常的代码
catch
    %处理异常代码
end
4.for循环
for index=起始点:终点值
    循环操作
end
5.while循环
while 循环条件
    循环操作
end

2.函数

1.函数的定义
function 返回的结果参数=函数名(入参)
      函数实际操作
end
function sum=func1(n)
if n<1
    sum=1;
else
    sum=func1(n-1)*n;
end
2.函数的运行
result=func1(5)  //定义一个变量去接收结果

3.绘制图像

1.曲线图 曲面图
sin(x)
>> x=0:0.01:2*pi;//设置x区间步长
>> y=sin(x);//设置需要画图的函数
>> plot(x,y);//画图
>> xlabel("x轴");//设置x轴名称
>> ylabel("y轴");//设置y轴名称
>> title("sin(x)")//设置标题
常用颜色以及线型

颜色:

  • ‘b’ - 蓝色(blue)

  • ‘g’ - 绿色(green)

  • 'r' - 红色(red)

  • 'c' - 青色 (cyan)

  • 'm' - 洋红色(magenta)

  • 'y' - 黄色(yellow)

  • 'k' - 黑色(black)

  • 'w' - 白色(white)

线型:

  • ‘-’ 实线(solid)

  • '--' 虚线(dashed)

  • ':' 点线(dotted)

  • '-.' 点划线(dash-dotted)

x=0:0.01:2*pi;//设置x区间步长
y=sin(x);//设置需要画图的函数
plot(x,y,'r--');//画图
xlabel("x轴");//设置x轴名称
ylabel("y轴");//设置y轴名称
title("sin(x)")//设置标题
legrnd('sin(x)')//设置图例
ezplot(可迅速绘制简单图形)

ezplot('sin(x)',[0,2*pi])

stairs(阶梯状曲线图)

stairs(x,y,'LineWidth',2)

 x=randn(1,100);

x=randn(1,100);
>> y=randn(1,100);
>> scatter(x,y,"filled")

 poparplot(绘制极坐标图)

>> x=linspace(0,2*pi,100);
>> y=2*sin(3*x);
>> polarplot(x,y,"LineWidth",2)

 area(绘制面积图,数据之前的关系变化趋势)

 x=0:0.1:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> area(x,[y1:y2]','LineStyle','--')

 contour(绘制等高线)

 [X,Y]=meshgrid(-2:0.1:2);
>> Z=X.^2+Y.^2;
>> contour(X,Y,Z,20)

 quiver(绘制矢量图,向量的大小以及方向)

 [X,Y]=meshgrid(-2:0.1:2);
>> Z=X.^2+Y.^2;
>> contour(X,Y,Z,20)
>> [DX,DY]=gradient(Z,0.25,0.25);
>> quiver(X,Y,DX,DY)

 surf(绘制三维曲面图,三元函数的空间形态)

 [X,Y]=meshgrid(-2:0.1:2);
 Z=peaks(X,Y);
 surf(x,y,z)

 histogram(绘制直方图,展示数据的分布情况)

x=randn(1000,1);
histogram(x,'Normalization','probability');//对数据进行了概率密度归一化

 bar(绘制条形图,对不同数据进行展示)

>> x=categorical({'A','B','C','D','E'});
>> y=[3 5 2 7 4];
>> bar(x,y)

 pie(绘制饼函数,展示不同的占比情况)

>> x=[25 35 20 15 10];
>> labels={'A','B','C','D','E'};
>> pie(x,labels);

 stem(绘制离散数据的垂直线段图)

>> x=0:0.1:2*pi;
>> y=sin(x);
>> stem(x,y);

 pcolor(绘制伪彩色图)

>> [X,Y]=meshgrid(-2:0.1:2);
>> Z=X.^2+Y.^2;
>> pcolor(X,Y,Z);
>> shading interp;

 errorbar(绘制带误差线的线图,展示数据的变化范围以及置信区间)

>> x=1:5;
>> y=[3 5 2 7 8];
>> e=[0.5 1 0.3 1.2 0.8];
>> errorbar(x,y,e,'o','MarkerSize',10,'LineWidth',2);

 rose(绘制极径图,展示数据的极向分布)

>> x=2*pi*rand(1,1000);
>> rose(x);

 boxplot(绘制箱线图,展示分布情况和异常值)

>> x=[randn(100,1);5+0.5*randn(50,1)];
>> g=[zeros(100,1);ones(50,1)];
>> boxplot(x,g,'Labels',{'Group 1','Group 2'});

 polarhistogram(绘制极坐标直方图,展示数据的极向分布)

>> x=2*pi*rand(1,1000);
>> polarhistogram(x,20);

 wordcloud(绘制词云图,展示文本数据的词频分布)

txt=fileread("文件.txt")
wordcloud(txt);

3.函数与方程

1.常用函数
主题词意义
polyval多项式求值(作用在多项式系数和x向量求y向量,返回n次多项式p在x的值)
conv多项式的乘积
deconv多项式的除法
roots求多项式的根
feval函数求值
inlinelnline函数
fzero求一元函数实根
fsolve方程组数值求解
fminbnd一元函数求值
fminserach多元函数求值
isqcurvefit曲线拟合
polyfit多项式拟合
2.求根
  • roots

roots函数用于求解多项式方程的根,即找到多项式在复数域中的所有根,它的输入是一个包含多项式系数的向量,输出是一个包含多项式在复数域中所有根的向量,roots函数使用的是拉格朗日-牛顿插值法,通过对多项式进行插值来计算多项式的根,因此,roots函数适用于求解多项式方程的根,但不能用于求解非多项式的根。

%函数表达式
syms x
f=(2.*x+3).^3-4;
%将多项式进行展开
f_v=expand(f)%8*x^3 + 36*x^2 + 54*x + 23
%展开后提取系数
p=[8,36,54,23];
%对多项式进行求根
value=roots(p)
polyval(p,value)
  • fzero

fzero函数用于求解单变量非线性方程的零点,即在给定的区间内找到函数的一个根,它使用的是单点迭代法(牛顿迭代法),通过不断逼近函数的零点来计算方程的解,因此,fzero函适用于求解多变量非线性方程组的根

>> %函数表达式
>> f=@(x)(2.*x+3).^3-4;
>> %区间
>> x=[-3,3];
>> %求解方程的零点
>> x=fzero(f,x);
>> %输出结果
>> disp(x)
   -0.7063
  • fsolve(非线性方程)

%定义非线性方程组
f=@(x)[9*x(1)^2+36*x(2)^2+4*x(3)^2-36;x(1)^2-2*x(2)^2-20*x(3);16*x(1)-x(1)^3-2*x(2)^2-16*x(3)^2];
%初始值
x=[1;1;1];
%求解方程组
x=fsolve(f,x);
%输出结果
disp(x)
3.多项式拟合
  • polyfit

polyfit是MATLAB中用于多项式拟合的函数,它可以根据给定的数据点,拟合出一个给定次数的多项式函数(x,y,n)

  • polyval

计算拟合结果

注意:多项式拟合并不一定能够完全恢复原始数

[x,fval]=fminbnd(fun,x1,x2)

据的特征,当拟合多项式次数过高时,可能会出现拟合的情况,导致拟合结果对于噪声过于敏感,从而失去了真实数据的预测能力,因此,在进行多项式拟合时,需要根据具体的数据特征和拟合目标,选择合适的多项式次数,避免出现过拟合或欠拟合的情况。

4.函数极值
  • fminbnd(求解单变量有界函数最小值)

注意:‘fun’表示待求解的单变量有界函数,可以是一个函数句柄,一个匿名函数或一个函数字符串;‘x1’和‘x2’分别为待求解区间的左右端点,即函数的取值范围,函数的输出结果包括了一个标量‘x’,表示函数的最小值点,以及一个标量‘fval’,表示函数在最小值点的取值。

该函数使用的是黄金分割法,通过不断的狭窄区间范围来逐步逼近函数的最小值点,因此,该函数适用于求解单变量有界函数的最小值,但不能用于求解多变量函数的最小值,无界函数的最小值或非连续函数的最小值。

5.微积分
主题词意义
diff导数(数值差分)
gradient数值导数和梯形
polyder多项式求导
quiver方向导数图
trapz梯形积分法
quadl高精度积分
int积分
integral高精度积分
dblquad矩阵二重积分
quad2d二重积分
integral2二重积分
triplequad矩阵三重积分
integral3三重积分

4.符号函数和符号矩阵

概念:函数计算是使用符号表达式来计算数学计算,而不是数值计算,符号表达式包含符号变量和数学运算符,可以表示数学公式、方程、函数等。符号计算可以进行求导、积分、解方程、化简等操作,得到的结果也是符号表达式,具有高精度和通用性。

在matlab中,可以使用符号工具箱进行符号计算,符号工具箱提供了一组函数和工具,用于创建、操作、化简符号表达式,以及进行符号积分、符号求导、符号求解等操作,使用符号工具箱进行符号变量和运算符来构造符号表达式。

符号计算和作用指令

主题词意义
sym将数值或字符转化为符号
symfun定义符号函数
syms定义符号变量或函数
subs变量替换
digits定义数值精度
vpa任意精度计算
double将符号对象转换为数值
char将符号对象转换为字符串
factor因式分解
expand展开式
collect合并同类项
finverse求函数逆
compose求复合函数
simplify化简
simple化为最短形式
numden分时通分
funtool函数计算器
limit符号极限
symsum级数求和
diff求导函数
taylor泰勒展开
taylortool泰勒展开计算器
jacobianJacobi矩阵
int积分
solve解方程
vpasolve方程数值解
dsolve解微分方程
ezplot简捷函数曲线
ezpolar极坐标图
ezplot3空间曲线
ezmesh网面
ezsurf曲面
ezcontour等高线
latex公式的Latex公式
ccode公式的C代码
matlabFunction公式的MATLAB代码
evalin调用Mupad计算
mupad调用Mupad计算
1.符号对象

符号对象是一种特殊的数据类型,称为符号对象,用字符串形式表达,但又不同于字符串,符号运算中的变量、函数和表达式都是符号对象。

>> %数值表达式
>> n=pi*2;
>> %数值转换为符号对象
>> a=sym(n);
>> %定义符号变量以及符号计算表达式
>> syms x y c
>> d=x^3+2*y^2;
>> %定义符号矩阵
>> A=[x,y;2*x,2*y]
 
A =
 
[   x,   y]
[ 2*x, 2*y]
 
>> A=subs(A,x,c)
 
A =
 
[   c,   y]
[ 2*c, 2*y]
2.计算精度和数据类型转换

符号数值计算默认精度为32位十进制,是MATLAB数值计算的两倍,符号工具箱号提供了计算精度设置指令,可以定义任意精度的数值计算。

 

>> %s为圆周率
>> s=pi
s =
    3.1416
>> %将数值计算精度设置为8位
>> digits(8)
>> %求s的数值结果
>> x=vpa(s)
x = 
3.1415927 
>> %采用n位计算精度求s的数值结果
>> x=vpa(s,n)
x =
3.14159
>> x=vpa(s,4) 
x = 
3.142 
>> %符号对象转换为双精度
>> double(s)
ans =
    3.1416
>> %符号对象转换为字符串
>> char(s)
3.符号矩阵和符号函数

MATLAB大部分矩阵和数组运算符及指令都可以应用于符号矩阵,大部分MATLAB数学函数和逻辑关系运算也可以用于符号对象。

>> %f(x,y)=(x-y)^3
>> %g(x,y)=(x+y)^3
>> %定义符号变量
>> syms x y;
%定义函数
>> f=(x-y)^3;
>>  g=(x+y)^3;
%两个函数相乘
>> h=f*g;
%展开多项式
>> hs=expand(h)
 
hs =
 
x^6 - 3*x^4*y^2 + 3*x^2*y^4 - y^6
%因式分解
>> hf=factor(hs)
 
hf =
 
[ x - y, x - y, x - y, x + y, x + y, x + y]
%定义符号函数,自变量是xy
>> fun=symfun(f*g,[x,y])
 
fun(x, y) =
 
(x + y)^3*(x - y)^3
%符号计算替换无需使用subs方法
>> s=fun(x,x^2+x+1)
 
s =
 
-(x^2 + 1)^3*(x^2 + 2*x + 1)^3
>> %合并同类项,变量x
>> scol=collect(s,x)
 
scol =
 
- x^12 - 6*x^11 - 18*x^10 - 38*x^9 - 63*x^8 - 84*x^7 - 92*x^6 - 84*x^5 - 63*x^4 - 38*x^3 - 18*x^2 - 6*x - 1
 
>> %化简
>> ssim=simplify(scol)
 
ssim =
 
-(x^2 + 1)^3*(x + 1)^6
%数学公式的Latex输出
latex(ssim)
​
ans =
​
    '-{\left(x^2+1\right)}^3\,{\left(x+1\right)}^6'
%数学公式的C语言代码
ccode(ssim)
​
ans =
​
    '  t0 = -pow(x*x+1.0,3.0)*pow(x+1.0,6.0);'
%数学公式的matlab匿名函数代码
matlabFunction(ssim)
​
ans =
​
  包含以下值的 function_handle:
​
    @(x)-(x.^2+1.0).^3.*(x+1.0).^6
4.符号微积分
  • 符号函数的极限limit(f,x,a)

f为所求极限的函数,x为变量,a为常数,求函数f关于变量x在a点处的极限,a和x都可以省略,若x省略,则x默认为是系统自变量,若a省略,a的默认值为0,若f的左右极限不等,还可以求单边极限:

limit(f,x,a,'right') limit(f,x,a,'left')

  • 符号函数的导数diff(f,x,n)

函数f关于变量x的n阶导数,n是多少就是对目标函数求几阶导数

  • 符号函数的积分int(f,x,a,b)

定积分:int(f,x) 不定积分:int(f,x,a,b) inf为无穷大

 

 

>> %定义符号变量
>> syms n x;
>> %定义表达式
>> f=(1+x/n)^n;
>> g=(-1)^n*x^n/n;
>> %符号极限的计算,变量n趋向于正无穷大
>> limit(f,n,inf)
 
ans =
 
exp(x)
 
>> %离散求和,变量n从1到无穷
>> symsum(g,n,1,inf)
 
ans =
 
piecewise(x == -1, Inf, abs(x) <= 1 & x ~= -1, -log(x + 1))

2.Matlab常规应用

1.分段函数

 

 

  • 使用匿名函数

>> %定义分度函数
>> f=@(x)(x>1).*x.^2+(-1<=x&x<1).*1+(x<=-1).*(3+2*x);
>> %生成x向量
>> x=linspace(-2,2,1000);
>> %计算y向量
>> y=f(x);
>> %绘制函数曲线
>> plot(x,y)
//设置网格曲线
>> grid on
%x坐标名称
>> xlabel('x')
#y坐标名称
>> ylabel('y')
%题目
>>title('分段函数f(x)')
legend('表达式1','表达式2')

 

  • 使用分段函数

编辑一个part脚本函数

function y=part(x)
n=length(x);
for i=1:n
    if x(i)>1
        y(i)=x(i).^2;
    elseif x(i)>-1
        y(i)=1;
    else
        y(i)=3+2*x(i);
    end
end
end
  • 通过find获取下标

>> x=linspace(-2,2,1000);
>> y=zeros(size(x));
>> ind1=find(x>1);%第一段函数的下标
>> ind2=find(x>-1&x<=1);%第二段函数的下标
>> ind3=find(x<=-1);%第三段函数的下标
>> y(ind1)=x(ind1).^2;%第一段函数
>> y(ind2)=1;%第二段函数
>> y(ind3)=3+2*x(ind3);%第三段函数

2.三维平面图

  • mesh绘图

>> %meshgrid函数用于生成二维网格矩阵,从而方便地生成网格图或三维图形
>> [X,Y]=meshgrid(-2:0.1:2);%相当于生成区间
>> %三维表达式
>> Z=X.^2-Y.^2;
>> %mesh方法绘制三维网格图
>> mesh(X,Y,Z);
>> xlabel('x');
>> ylabel('y');
>> zlabel('z');
>> title('三维网格图');

 

  • surf绘图

>> %生成数据
>> %meshgrid函数可以用于生成二维网格矩阵,从而方便地生成网格图或三维图形
>> [X,Y]=meshgrid(-2:0.1:2);%相当于生成区间
>> %三维表达式
>> Z=X.^2-Y.^2;
>> %surf方法绘制三维曲面图
>> surf(X,Y,Z);
>> xlabel('x');
>> ylabel('y');
>>  zlabel('z');
>> title('三维曲面图');

 

  • 使用contour方法绘制等高线

>> %生成数据
>> %meshgrid函数可以用于生成二维网格矩阵,从而方便地生成网格图或三维图形
>> [X,Y]=meshgrid(-2:0.1:2);%相当于生成区间
>> %三维表达式
>> Z=X.^2-Y.^2;
>> %contour方法绘制三维网格图
>> contour(X,Y,Z);
%如果想要确定某一等高线直接在后面添加参数
%contour(X,Y,Z,[1]);
>> xlabel('x');
>> ylabel('y');
>>  zlabel('z');
>> title('三维等高线');

 

3.三维线性图

  • 使用plot3绘制三维线条

>> %生成数据
>> t=linspace(0,10*pi,1000);
>> x=sin(t);
>> y=cos(t);
>> z=t;
>> %绘制三维线条图
>> plot3(x,y,z);
>> xlabel('x');
>> ylabel('y');
>> zlabel('z');
>> title('三维线条图');

 

4.矩阵运算(线性方程组求解问题)

使用rref化为行最简化求方程组的解答

>> %根据线性方程组得到矩阵A,b
>> A=[1 -1 1 -1;-1 1 1 -1;2 -2 -1 1];
>> b=[1;1;-1];
>> %只有当矩阵A的秩和增广矩阵(A,b)秩相等才有解答
>> if rank(A)==rank([A,b])
      %使用rref求增广矩阵行最简
          rref([A,b])
else
    disp('次方程组无解')
end
​
ans =
​
     1    -1     0     0     0
     0     0     1    -1     1
     0     0     0     0     0

正交变换--将二次型化为标准型

首先根据给出的公式写出矩阵A,通过矩阵A求特征值和特征向量,正交化,规范化然后求出标准化

normalize.m(规范化)

function V_norm=normalize(V)%定义规范函数
%对向量进行规范化
[m,n]=size(V);
for i=i:n
    V_norm(:,i)=V(:,i)/norm(V(:,i));
end
end

gramSchmidt.m(正交化)

function [Q,R]=gridSchmidt(A)
%Gram-Schmidt 正交化过程
[m,n]=size(A);
Q=A;
R=zeros(n,n);
for j=1:n
    R(j,j)=norm(Q(:,j));
    Q(:,j)=Q(:,j)/R(j,j);
    for i=j+1:n
        R(j,i)=Q(:,j)*Q(:,i);
        Q(:,i)=Q(:,i)-R(j,i)*Q(:,j);
    end
end
end

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

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

相关文章

单片机STM32看门狗详解(嵌入式学习)

单片机STM32看门狗 什么是看门狗为什么需要看门狗&#xff1f;STM32CubeMX配置和应用示例独立看门狗&#xff08;IWDG&#xff09;窗口看门狗&#xff08;WWDG&#xff09; 注意事项 什么是看门狗 单片机STM32的看门狗&#xff08;Watchdog&#xff09;是一种硬件定时器&#…

PRL:城大团队提出新型量子理论

光子盒研究院 近期&#xff0c;由香港城市大学&#xff08;城大&#xff09;物理学家领导的团队开发了一个新的量子理论&#xff0c;解释了物质的“光诱导阶段(light-induced phase)”&#xff0c;并预测了它的新功能。 3月初&#xff0c;研究成果以Multidimensional Coherent …

基于Arduino UNO的智能摇头避障小车

目录 1.首先介绍两个基本函数 2.L298N控制逻辑 3.让小车实现前后左右轮子动代码示例 4.串口介绍 5.跟随小车开发 6.摇头避障小车开发 7.实物展示 1.首先介绍两个基本函数 void setup() { // put your setup code here, to run once: 把你的设置代码放在这里&#xff0…

创建项目并精细化配置【Vue3】

创建项目并精细化配置 git管理项目 基于 create-vue 创建出来的项目默认没有初始化git仓库&#xff0c;需要我们手动初始化 执行命令并完成首次提交 git initgit addgit commit -m “init” 什么是别名路径联想提示 在编写代码的过程中&#xff0c;一旦输入 /&#xff0c;V…

【数据分享】1929-2022年全球站点的逐日平均露点数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

【零基础入门学习Python---Python函数和模块】

&#x1f680; Python &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

protoBuf

序列化和反序列化 链接 序列化的对象是什么 程序对象 对象序列化之后是什么 字节流 protocol buffer 链接 教程 原文链接 Protocol Buffer 的作用 通过将结构化的数据&#xff08;拥有多种属性&#xff09;进行序列化&#xff0c;从而实现&#xff08;内存与硬盘之间…

探索MediaPipe检测人脸关键点

MediaPipe是Google开源的计算机视觉处理框架&#xff0c;基于TensorFlow来训练模型&#xff0c;支持人脸识别、人脸关键点、物体检测追踪、图像分类、人像分割、手势识别、文本分类、语音分类等。我们可以使用CPU来推理&#xff0c;也可以选择GPU加速推理。在滤镜特效场景&…

【软考网络管理员】2023年软考网管初级常见知识考点(17)-数据加密与签名摘要

涉及知识点 对称加密&#xff0c;非对称加密&#xff0c;数字签名&#xff0c;报文摘要&#xff0c;数字证书 软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 文章目录 涉及知识点前言一、对称加密技术1.DES2.3DES3.IDEA4.AES5…

系统架构的精髓:18个必懂的设计概念一览

要想在系统设计领域中脱颖而出&#xff0c;深入理解一些基础的系统设计概念是必不可少的&#xff0c;这些概念包括负载均衡、缓存、分区、复制、数据库和代理等。 依据我自己的经验&#xff0c;我总结出了18个关键概念&#xff0c;如果能掌握这些&#xff0c;将极大地提升你处…

Android APT 系列 (二):APT 筑基之注解

注解介绍 元数据 元数据就是为其他数据提供信息的数据 注解 官方解释&#xff1a;注解用于为代码提供元数据。作为元数据&#xff0c;注解不直接影响你的代码执行&#xff0c;但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 JDK 1.5 开始添加到 Java 的。 简单…

建议收藏:OpenKruise入门与实践

简介 OpenKruise 是一个基于 Kubernetes 的扩展套件&#xff0c;主要聚焦于云原生应用的自动化&#xff0c;比如部署、发布、运维以及可用性防护。 OpenKruise 提供的绝大部分能力都是基于 CRD 扩展来定义&#xff0c;它们不存在于任何外部依赖&#xff0c;可以运行在任意纯净的…

css 背景颜色级别高于背景图

<div class"bg-parent"> <img :src"employeeImg" class"bg-url" /> <div class"bg"> <el-icon class"plus-icon"> <Plus /> </el-icon> </div> </div> .bg-parent{ //父级…

Web服务器群集:Nginx之Rewrite重写

目录 一、理论 1.Nginx正则表达式 2.location匹配 3.rewrite重写 二、实验 1.基于域名的跳转 2.基于客户端 IP访问跳转 3.基于旧域名跳转到新域名后面加目录 4.基于参数匹配的跳转 5.基于目录下所有 php结尾的文件跳转 6.基于最普通一条url请求的跳转 三、总结 一、…

福昕Foxit PDF远程代码执行漏洞CVE-2023-27363分析与复现

漏洞概述 福建福昕软件开发股份有限公司是一家国际化运营的PDF电子文档解决方案提供厂商&#xff0c;提供文档的生成、转换、显示、编辑、搜索、打印、存储、签章、表单、保护、安全分发管理等涵盖文档生命周期的产品技术与解决方案。其下产品Foxit PDF Reader和Foxit PDF Edit…

性能测试——App性能测试需要关注的指标

目录 一、Android客户端性能测试常见指标&#xff1a; 二、预期标准指定原则 三、测试方法及工具 一.从用户角度出发 二.站在管理员的角度考虑需要关注的性能点 三.站在开发(设计)人员角度去考虑 四.站在测试工程师角度考虑 总结&#xff1a; 一、Android客户端性能测试…

无功功率补偿及电容器的简单介绍 安科瑞 许敏

摘要&#xff1a;主要对无功功率的概念、电容器的补偿方式、补偿容量的计算等方面进行了阐述&#xff0c;在此基础上介绍了电容器运行的注意事项。 关键词&#xff1a;电力电容器&#xff1b;补偿方式 &#xff1b;运行 0 引言 笔者从进入吕合煤业从事电工工作的那天起&#…

Wav2Lip原理以及训练

原理 1: 音视频同步判别器 常规SyncNet&#xff1a; 功能&#xff1a;音频和嘴唇同步 实质&#xff1a;判断音频和唇形在某个共同参数空间下的相似性。 网络结构&#xff1a; 一种伪孪生网络结构&#xff0c;分别提取嘴形特征和音频特征&#xff0c;然后通过对比损失计算两者…

VS2017+OpenCV4.5.1 安装与配置,扩展模块opencv_contrib的安装与配置

文章目录 VS2017OpenCV4.5.1 安装与配置&#xff0c;扩展模块opencv_contrib的安装与配置1、OpenCV下载&#xff1a;&#xff08;1&#xff09;下载地址&#xff1a;https://opencv.org/releases/page&#xff08;2&#xff09;解压到指定文件夹&#xff1a; 2、配置环境&#…

如何进行可视化的数据过滤?Sugar BI 的过滤组件教你快速实现

Sugar BI 中支持了 10种过滤组件&#xff0c;这些过滤组件都是让用户在浏览报表或大屏的时候&#xff0c;能够交互式的对页面上的图表进行数据的过滤。所有过滤组件对图表的数据过滤设置都是一样的&#xff0c;如下&#xff1a; 例如页面中已有两个图表&#xff08;这两个图表…