Matlab(画图进阶)
目录
大纲
1.特殊的Plots
1.1 loglog(双对数刻度图)
1.3 plotyy(创建具有两个y轴的图形)
1.4yyaxis(创建具有两个y轴的图)
1.5 bar
3D条形图(bar3)
1.6 pie(饼图)
3D饼图
1.7 polar
2.Stairs And Ste阶梯图
3.Boxplot 箱型图和Error Bar误差条形图
3.1 boxplot
3.2 errorbar
4.fill(创建二维填充补片)
5.RGB颜色
6.imagesc(使用缩放颜色显示图像)
7.颜色条和方案
8.3D Plots
8.1.plot3
8.2 mesh()和surf()
8.3 contour()
8.4 meshc()和surfc()
9.view()视角
10.光线light():
11.patch()
在我们实际应用Matlab的过程中,往往还需要更加高难度的画图技术才可以满足我们的需求,高超的技术往往需要最朴实的手法,今天让我们一探究竟!!!
大纲
1.特殊的Plots
loglog | 图与对数刻度为两个轴 |
semilogx | x轴为对数刻度,y轴为线性刻度的图形 |
semilogy | y轴为对数刻度,x轴为线性刻度的图形 |
yyaxis | 左边和右边有y标记标签的图形 |
hist | 直方图、柱形图 |
bar | 条形图 |
pie | 饼图 |
polarlot | 极坐标图 |
1.1 loglog(双对数刻度图)
语法一:loglog(x,y)
在 x 轴和 y 轴上应用以 10 为底的对数刻度来绘制 x 和 y 坐标
- 要绘制由线段连接的一组坐标,将x和y指定为相同长度的向量
- 在同一组坐标区上绘制多组坐标,将x和y中的至少一个指定为矩阵
示例:
将
x
定义为一个由区间 [10−1,102] 内的 50 个对数间距数组成的向量。将y
定义为 2x。然后绘制x
和y
,并调用grid
函数显示网格线
x = logspace(-1,2);%loglog默认就是以10为底的指数,所以这里只用定义上标数值便可
y = 2.^x;
loglog(x,y)
grid on
语法二:loglog(x1,y1,...,xn,yn)
在同一组坐标轴上绘制多对 x 和 y 坐标。此语法可替代将坐标指定为矩阵的形式。
示例:
创建一个由 x 坐标组成的向量和两个由 y 坐标组成的向量。通过将以逗号分隔的 x-y 对组传递给
loglog
绘制两个线条。
x = logspace(-1,2);
y1 = 10.^x;
y2 = 1./10.^x;
loglog(x,y1,x,y2)
grid on
语法三:loglog(x,y,LineSpec)
使用指定的线型、标记和颜色创建绘图
示例:
创建一组 x 坐标和 y 坐标,并将其显示在双对数图中。将线型指定为
's'
以显示不带连接线的方形标记。将标记填充颜色指定为 RGB 三元组[0 0.447 0.741]
,它对应于深蓝色。
x = logspace(-1,2,20);
y = 10.^x;
loglog(x,y,'s','MarkerFaceColor',[0 0.447 0.741])
grid on
1.2 semilogx(双对数图,x轴对数刻度)
语法一:semilogx(x,y)
在 x 轴上使用以 10 为底的对数刻度、在 y 轴上使用线性刻度来绘制 x 和 y 坐标。
-
要绘制由线段连接的一组坐标,请将
X
和Y
指定为相同长度的向量。 -
要在同一组坐标区上绘制多组坐标,请将
X
或Y
中的至少一个指定为矩阵。
示例:
将
x
定义为一个由从0.1
到100
的对数间距值组成的向量,将y
定义为x
的副本。创建x
和y
的线性对数图,并调用grid
函数显示网格线。
x = logspace(-1,2);
y = x;
semilogx(x,y)
grid on
语法二:semilogx(x1,y1,...,xn,yn)
在同一组坐标轴上绘制多对 x 和 y 坐标。此语法可替代将坐标指定为矩阵的形式
示例:
创建一个由对数间距 x 坐标组成的向量和两个由 y 坐标组成的向量。通过将以逗号分隔的 x-y 对组传递给
semilogx
绘制两个线条。
%y = logspace(a,b) 生成一个由在 10^a 和 10^b(10 的 N 次幂)之间的 50 个对数间距点组成的行向量 y。logspace 函数对于创建频率向量特别有用。该函数是 linspace 和“:”运算符的对数等价函数。
x = logspace(-1,2);
y1 = x;
y2 = -x;
semilogx(x,y1,x,y2)
grid on
语法三:semilogx(x,y,LineSpec)
使用指定的线型、标记和颜色创建绘图。
示例:
创建一组 x 坐标和 y 坐标,并将其显示在线性对数图中。将线型指定为
'o'
以显示不带连接线的圆形标记。将标记填充颜色指定为 RGB 三元组[0 0.447 0.741]
,它对应于深蓝色。
%在10的幂10^-1和10^2之间生成15个点
x = logspace(-1,2,15);
y = 12 + x;
semilogx(x,y,'o','MarkerFaceColor',[0 0.447 0.741])
grid on
1.3 plotyy(创建具有两个y轴的图形)
不建议使用,有版本兼容问题
语法一:plotyy(X1,Y1,X2,Y2)绘制 Y1
对 X1
的图,在左侧显示 y 轴标签,并同时绘制 Y2
对 X2
的图,在右侧显示 y 轴标签。
示例:
- 使用两个不同的y轴在一个图上绘制两个数据集
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure
plotyy(x,y1,x,y2)
- 使用两个y轴在一个图上绘制两个数据集,添加标题和轴标签
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);figure % new figure
%hAx是两个坐标轴的句柄,hLine1和hLine2分别是第一条曲线和第二条曲线的句柄
[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);title('Multiple Decay Rates')
xlabel('Time (\musec)')ylabel(hAx(1),'Slow Decay') % left y-axis
ylabel(hAx(2),'Fast Decay') % right y-axis
1.4yyaxis(创建具有两个y轴的图)
语法一:yyaxis left
激活当前坐标区中与左侧 y 轴关联的一侧。后续图形命令的目标为左侧。如果当前坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。如果没有坐标区,此命令将首先创建坐标区。
示例:
创建左右两侧都有 y 轴的坐标区。基于左侧 y 轴绘制一组数据的图。然后使用
yyaxis right
激活右侧,使后续图形函数作用于该侧。基于右侧 y 轴绘制第二组数据的图,并为右侧 y 轴设置范围。
x = linspace(0,10);
y = sin(3*x);
yyaxis left
plot(x,y)z = sin(3*x).*exp(0.5*x);
yyaxis right
plot(x,z)
ylim([-150 150])
语法二:yyaxis right
激活当前坐标区中与右侧 y 轴关联的一侧。后续图形命令的目标为右侧。
语法三:yyaxis(ax,___)
指定 ax
坐标区(而不是当前坐标区)的活动侧。如果坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。指定坐标区作为第一个输入参数。使用单引号将 'left'
和 'right'
引起来。
从R2019b开始,我们可以使用
tiledlayout
和nexttile
函数显示分块图。调用tiledlayout
函数以创建一个 2×1 分块图布局。调用nexttile
函数以创建坐标区对象ax1
和ax2
。通过指定ax1
作为yyaxis
的第一个输入,在顶部坐标区中添加第二个 y 轴。如果不指定坐标区,yyaxis
将向当前坐标区添加第二个 y 轴。
>> colororder({'b','m'})%可以更改左右侧的颜色 b-蓝色 m-粉色x = linspace(1,10);
tiledlayout(2,1)%创建一个2*1分块图布局% Top plot
ax1 = nexttile;%调用函数nexttilt函数创建坐标区对象
yyaxis(ax1,'left')
plot(ax1,x,sin(x))
yyaxis(ax1,'right')
plot(ax1,x,exp(x))% Bottom plot
ax2 = nexttile;
plot(ax2,1:10)
1.5 bar
语法一:bar(y)
创建一个条形图,y
中的每个元素对应一个条形。
-
要绘制单个条形序列,请将
y
指定为长度为 m 的向量。这些条形沿 x 轴从1
到 m 依次放置。 -
要绘制多个条形序列,请将
y
指定为矩阵,每个序列对应一列。
示例:
- 创建条形图
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y)
- 指定沿x轴的条形位置
x = 1900:10:2000;
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(x,y)
- 指定条形宽度
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,0.4)%将各条形的宽度设置为各条形可用总空间的 40%。
- 显示条形组
y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];%显示四个条形组,每一组包含三个条形。
bar(y)
- 显示堆叠条形图
y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y,'stacked')%为矩阵中的每一行显示一个条形。每个条形的高度是行中各元素之和。
- 在条形末端指定标签
x = [1 2 3];
vals = [2 3 6; 11 23 26];
b = bar(x,vals);
我们可以使得在条形序列的末端显示值,通过获得Bar对象的XEndPoints和YEndPoints属性,获取条形末端的坐标,将这些坐标传递给text函数,并指定垂直和水平对齐的方式,让值显示在条形末端上方居中处
xtips1 = b(1).XEndPoints;
ytips1 = b(1).YEndPoints;
labels1 = string(b(1).YData);
text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...'VerticalAlignment','bottom')
xtips2 = b(2).XEndPoints;
ytips2 = b(2).YEndPoints;
labels2 = string(b(2).YData);
text(xtips2,ytips2,labels2,'HorizontalAlignment','center',...'VerticalAlignment','bottom')
-
3D条形图(bar3)
x = [1 2 5 4 8]; y = [x;1:5];
subplot(1,3,1); bar(x); title('A bargraph of vector x');
subplot(1,3,2); bar(y); title('A bargraph of vector y');
subplot(1,3,3); bar3(y); title('A 3D bargraph');
1.6 pie(饼图)
语法一:pie(x)
使用 X
中的数据绘制饼图。饼图的每个扇区代表 X
中的一个元素。
-
如果
sum(X) ≤ 1
,X
中的值直接指定饼图扇区的面积。如果sum(X) < 1
,pie
仅绘制部分饼图。 -
如果
sum(X) > 1
,则pie
通过X/sum(X)
对值进行归一化,以确定饼图的每个扇区的面积。 -
如果
X
为categorical
数据类型,则扇区对应于类别。每个扇区的面积是类别中的元素数除以X
中的元素数的结果。
示例:
- 创建带偏移扇区的饼图
X = [1 3 0.5 2.5 2];
pie(X)%创建向量 X 的饼图。
我们可以将对应的explode元素设置为1来偏移第二和第四块饼图扇区
explode = [0 1 0 1 0];
pie(X,explode)
- 指定饼图的文本标签
X = 1:3;
labels = {'斗破','火影','海贼'};
pie(X,labels)
- 修改饼图的文本标签
>> X = 1:3;
labels = {'斗破','火影','海贼'};
p=pie(X,labels)
获取标签“Profit”的文本对象。更改其颜色和字体大小。使用圆点表示法设置属性。
t=p(6);
>> t.BackgroundColor='yellow';
>> t.EdgeColor='red';
>> t.FontSize=15t = Text (海贼) - 属性:String: '海贼'FontSize: 15FontWeight: 'normal'FontName: 'Helvetica'Color: [0 0 0]HorizontalAlignment: 'left'Position: [1.1000 -2.6942e-16 0]Units: 'data'
显示 所有属性 可修改属性BackgroundColor: [1 1 0]BeingDeleted: 'off'BusyAction: 'queue'ButtonDownFcn: ''Children: [0×0 GraphicsPlaceholder]Clipping: 'off'Color: [0 0 0]CreateFcn: ''DeleteFcn: ''EdgeColor: [1 0 0]Editing: 'off'Extent: [1.1000 -0.0897 0.2804 0.1794]FontAngle: 'normal'FontName: 'Helvetica'FontSize: 15FontSmoothing: 'on'FontUnits: 'points'FontWeight: 'normal'HandleVisibility: 'on'HitTest: 'on'HorizontalAlignment: 'left'Interpreter: 'tex'Interruptible: 'on'LineStyle: '-'LineWidth: 0.5000Margin: 3Parent: [1×1 Axes]PickableParts: 'visible'Position: [1.1000 -2.6942e-16 0]Rotation: 0Selected: 'off'SelectionHighlight: 'on'String: '海贼'Tag: ''Type: 'text'UIContextMenu: [0×0 GraphicsPlaceholder]Units: 'data'UserData: []VerticalAlignment: 'middle'Visible: 'on'
- 指定百分比标签的格式
X = [1/3 2/3];
pie(X,'%.3f%%')%要在标签中包含百分号,请在表达式末尾指定 '%%'。
-
3D饼图
>> X = 1:3;
labels = {'斗破','火影','海贼'};
pie3(X,labels)
1.7 polar
%theta 弧度角 r 每个点的半径值
x = 1:100; theta = x/10; r = log10(x);
subplot(1,4,1); polar(theta,r);
theta = linspace(0, 2*pi); r = cos(4*theta);
subplot(1,4,2); polar(theta, r);
theta = linspace(0, 2*pi, 6); r = ones(1,length(theta));
subplot(1,4,3); polar(theta,r);
theta = linspace(0, 2*pi); r = 1-sin(theta);
subplot(1,4,4); polar(theta , r);
2.Stairs And Ste阶梯图
stair | 阶梯图 |
stem | 绘制离散序列数据 |
x = linspace(0, 4*pi, 40); y = sin(x);
subplot(1,2,1); stairs(y);
subplot(1,2,2); stem(y);
3.Boxplot 箱型图和Error Bar误差条形图
boxplot | 用箱线图可视化汇总统计量 |
errorbar | 含误差条的线图 |
3.1 boxplot
箱线图提供样本数据的汇总统计量的可视化,并包含以下特性:
-
每个箱子的底部和顶部分别表示样本的第 25 个和第 75 个百分位数。每个箱子的底部和顶部之间的距离表示四分位差。
-
每个箱子中间的红线表示样本中位数。如果中位数不在箱子的中心,则绘图显示样本偏度。
-
须线是自每个箱子的顶部向上延伸和底部向下延伸的线条。须线从四分位差的端点延伸到须线长度内最远的观测值(相邻值)。
-
超出须线长度的观测值标记为离群值。默认情况下,离群值是距离箱子底部或顶部超过 1.5 倍四分位差的值。不过,您可以通过使用额外的输入参数来调整此值。离群值显示为红色 + 号。
-
缺口显示样本间中位数的变异性。计算缺口的宽度,使得缺口不重叠的框在 5% 显著性水平上具有不同中位数。显著性水平基于正态分布假设,但对于其他分布,中位数比较也可合理地认为是稳健的。比较箱线图中位数就像目测假设检验,类似于用于均值的 t 检验。在某些情况下,缺口可能会延伸到箱子外部。
3.2 errorbar
errorbar(x,y,neg,pos)
在每个数据点处绘制一个垂直误差条,其中 neg
确定数据点下方的长度,pos
确定数据点上方的长度。
4.fill(创建二维填充补片)
语法一:fill(x,y,c)
将填充多边形区域绘制为补片,其顶点位于由 x 和 y 指定的 (x,y) 位置。
-
要绘制一个区域,请将
X
和Y
指定为向量。 -
要绘制多个区域,请将
X
和Y
指定为矩阵,其中每列对应一个多边形。
示例:
x = [0 4 5 2 1];
y = [0 0 2 4 3];
fill(x,y,'r')
t =(1:2:15)'*pi/8; %关键算弧度
x = sin(t); y = cos(t);
fill(x,y,'r'); axis square off;
text(0,0,'STOP','Color', 'w', 'FontSize', 80, ...
'FontWeight','bold', 'HorizontalAlignment', 'center');
练习:
5.RGB颜色
颜色自查表:
6.imagesc(使用缩放颜色显示图像)
语法一:imagesc(C)
将数组 C
中的数据显示为一个图像,该图像使用颜色图中的全部颜色。C
的每个元素指定图像的一个像素的颜色。生成的图像是一个 m
×n
像素网格,其中 m
和 n
分别是 C
中的行数和列数。这些元素的行索引和列索引确定了对应像素的中心。
示例:
创建矩阵 C。显示 C 中数据的图像。向图添加颜色栏以显示当前颜色图。默认情况下,
imagesc
色阶颜色范围以便图像使用颜色图中的所有颜色,其中C
中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。
>> C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
imagesc(C)
>> colorbar
-
向三维视图的坐标区添加图像
Z = 10 + peaks;
surf(Z)
hold on
imagesc(Z)
语法二:imagesc(x,y,C)
指定图像位置。使用 x
和 y
可指定与 C(1,1)
和 C(m,n)
对应的边角的位置。要同时指定两个边角,请将 x
和 y
设置为二元素向量。要指定第一个边角并让 imagesc
确定另一个,请将 x
和 y
设为标量值。图像将根据需要进行拉伸和定向。
示例:
放置图像,使其位于 x 轴上的 5 和 8 之间及 y 轴上的 3 和 6 之间。
x = [5 8];
y = [3 6];
C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
imagesc(x,y,C)
注意:对应于 C(1,1)
的像素在点 (5,3) 上居中显示。对应于 C(3,4)
的像素在点 (8,6) 上居中显示。imagesc
在这两个点之间确定图像其余部分的位置和方向。
7.颜色条和方案
>> [x, y] = meshgrid(-3:.2:3,-3:.2:3);
z = x.^2 + x.*y + y.^2; surf( x, y, z); box on;
set(gca,'FontSize', 16); zlabel('z');
xlim([-4 4]); xlabel('x'); ylim([-4 4]); ylabel('y');
imagesc(z); axis square; xlabel('x'); ylabel('y');
>> colorbar
>> colormap(hot);
colormap(cool);
colormap(spring);
颜色总表:
8.3D Plots
plot3 | 三维线图像 | ![]() |
surf | 三维阴影曲面图 | ![]() |
surfc | 三维阴影表面下的轮廓图 | ![]() |
surface | 创建表面对象 | |
meshc | 在网格图下绘制等值线图 | ![]() |
contour | 矩阵等高线图 | ![]() |
contourf | 填充了二维等高线图 | ![]() |
如何将2维平面用3D视角观看:
x=0:0.1:2*pi;
plot(x,sin(x));
方法一:
方法二:
>> x=0:0.1:2*pi;
plot(x,sin(x));
>> rotate3d on
8.1.plot3
x=0:0.1:3*pi; z1=sin(x); z2=sin(2.*x); z3=sin(3.*x);
y1=zeros(size(x)); y3=ones(size(x)); y2=y3./2;
plot3(x,y1,z1,'r',x,y2,z2,'b',x,y3,z3,'g');
grid on;
xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');
三维曲面图原理:
- 通常用于绘图功能:Z=f(x,y)
- 需要为Matlab提供一组(x,y,z)点
x = -2:1:2;
y = -2:1:2;
[X,Y] = meshgrid(x,y)
8.2 mesh()和surf()
x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(1,2,1); mesh(X,Y,Z);
subplot(1,2,2); surf(X,Y,Z);
8.3 contour()
x = -3.5:0.2:3.5;
y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(2,1,1);
mesh(X,Y,Z);
axis square;
subplot(2,1,2);
contour(X,Y,Z);
axis square;
各种等高线的表示:
x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y); Z = X.*exp(-X.^2-Y.^2);
subplot(1,3,1); contour(Z,[-.45:.05:.45]); axis square;
subplot(1,3,2); [C,h] = contour(Z);
clabel(C,h); axis square;
subplot(1,3,3); contourf(Z); axis square;
8.4 meshc()和surfc()
%比mesh()和surf()多了等高线
x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y); Z = X.*exp(-X.^2-Y.^2);
subplot(1,2,1); meshc(X,Y,Z);
subplot(1,2,2); surfc(X,Y,Z);
9.view()视角
>> sphere(50); shading flat;
light('Position',[1 3 2]);
light('Position',[-3 -1 3]);
material shiny;
axis vis3d off;
set(gcf,'Color',[1 1 1]);
view(-45,20);
10.光线light():
[X, Y, Z] = sphere(64); h = surf(X, Y, Z);
axis square vis3d off;
reds = zeros(256, 3); reds(:, 1) = (0:256.-1)/255;
colormap(reds); shading interp; lighting phong;
set(h, 'AmbientStrength', 0.75, 'DiffuseStrength', 0.5);
L1 = light('Position', [-1, -1, -1]);
set(L1, 'Position', [-1, -1, 1]);
set(L1, 'Color', 'g');
11.patch()
v = [0 0 0; 1 0 0 ; 1 1 0; 0 1 0; 0.25 0.25 1; ...
0.75 0.25 1; 0.75 0.75 1; 0.25 0.75 1];
f = [1 2 3 4; 5 6 7 8; 1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8];
subplot(1,2,1); patch('Vertices', v, 'Faces', f, ...
'FaceVertexCData', hsv(6), 'FaceColor', 'flat');
view(3); axis square tight; grid on;
subplot(1,2,2); patch('Vertices', v, 'Faces', f, ...
'FaceVertexCData', hsv(8), 'FaceColor', 'interp');
view(3); axis square tight; grid on;
Matlab画图这方面确实是太强了,在我们游戏中有些图用Matlab也是可以画出来的,加油吧,少年!!!
load cape
X=conv2(ones(9,9)/81,cumsum(cumsum(randn(100,100)),2));
surf(X,'EdgeColor','none','EdgeLighting','Phong',...
'FaceColor','interp');
colormap(map); caxis([-10,300]);
grid off; axis off
相关文章:

Matlab(画图进阶)
目录 大纲 1.特殊的Plots 1.1 loglog(双对数刻度图) 1.3 plotyy(创建具有两个y轴的图形) 1.4yyaxis(创建具有两个y轴的图) 1.5 bar 3D条形图(bar3) 1.6 pie(饼图) 3D饼图 1.7 polar 2.Stairs And Ste阶梯图 3.Boxplot 箱型图和Error Bar误差条形图 3.1 boxplot 3.2 …...

人生的回忆
回忆是人类宝贵的精神财富,它们像一串串珍珠,串联起我们生活中的每一个片段。 回忆是时间的见证者,它们承载着我们成长、经历、悲欢离合的点点滴滴。 回忆让我们重温过去的欢笑与眼泪,感受那些已经逝去的时光。它们就像一本翻开的…...

Spring之依赖注入源码解析
Spring之依赖注入源码解析 Spring依赖注入的方式 手动注入 在XML中定义Bean时,即为手动注入,因为是程序员手动给某个属性指定了值。 通过set方式进行注入 <bean name"userService" class"com.luban.service.UserService">…...

5G NR:RACH流程-- Msg1之生成PRACH Preamble
随机接入流程中的Msg1,即在PRACH信道上发送random access preamble。涉及到两个问题: 一个是如何产生preamble?一个是如何选择正确的PRACH时频资源发送所选的preamble? 一、PRACH Preamble是什么 PRACH Preamble从数学上来讲是一个长度为…...

高基数类别特征预处理:平均数编码 | 京东云技术团队
一 前言 对于一个类别特征,如果这个特征的取值非常多,则称它为高基数(high-cardinality)类别特征。在深度学习场景中,对于类别特征我们一般采用Embedding的方式,通过预训练或直接训练的方式将类别特征值编…...

高效利用隧道代理实现无阻塞数据采集
在当今信息时代,大量的有价值数据分散于各个网站和平台。然而,许多网站对爬虫程序进行限制或封禁,使得传统方式下的数据采集变得困难重重。本文将向您介绍如何通过使用隧道代理来解决这一问题,并帮助您成为一名高效、顺畅的数据采…...

图论岛屿问题DFS+BFS
leetcode 200 岛屿问题 class Solution {//定义对应的方向boolean [][] visited;int dir[][]{{0,1},{1,0},{-1,0},{0,-1}};public int numIslands(char[][] grid) {//对应的二维数组int count0;visitednew boolean[grid.length][grid[0].length];for (int i 0; i < grid.l…...

Cypress web自动化windows环境npm安装Cypress
前言 web技术已经进化了,web的测试技术最终还是跟上了脚步,新一代的web自动化技术出现了? Cypress可以对在浏览器中运行的任何东西进行快速、简单和可靠的测试。 官方地址https://www.cypress.io/,详细的文档介绍https://docs.cypress.io/g…...

CentOS7.9设置ntp时间同步
文章目录 应用场景基础知识操作步骤 应用场景 我们公司是做智慧交通的,主要卖交通相关的硬件和软件。硬件包括信号机、雷达、雷视、边缘盒子等,软件包括信控平台、管控平台等信号机设备、雷达设备、边缘计算单元等,还有一些第三方的卡口设备…...

36、springboot --- 对 tomcat服务器 和 undertow服务器 配置访客日志
springboot 配置访客日志 ★ 配置访客日志: 访客日志: Web服务器可以将所有访问用户的记录都以日志的形式记录下来,主要就是记录来自哪个IP的用户、在哪个时间点、访问了哪个资源。 Web服务器可将所有访问记录以日志形式记录下来ÿ…...

MySQL表的增删改查
文章目录 MySQL表的增删改查1. Create1.1 单行数据插入1.2 多行数据插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 英语不及格的同学及英语成绩(&l…...

yolov3
yolov1 传统的算法 最主要的是先猜很多候选框,然后使用特征工程来提取特征(特征向量),最后使用传统的机器学习工具进行训练。然而复杂的过程可能会导致引入大量的噪声,丢失很多信息。 从传统的可以总结出目标检测可以分为两个阶…...

基于低代码/无代码工具构建 BI 应用程序
一、前言 随着数字化推进,越来越多的企业开始重视数据分析,希望通过BI(商业智能)技术提高业务决策的效率和准确性。 传统的BI解决方案往往需要大量的定制开发和数据准备,不仅周期长、成本高,还需要专业的数…...

Servlet与过滤器
目录 Servlet 过滤器 Servlet Servlet做了什么 本身不做任何业务处理,只是接收请求并决定调用哪个JavaBean去处理请求,确定用哪个页面来显示处理返回的数据 Servlet是什么 ServerApplet,是一种服务器端的Java应用程序 只有当一个服务器端的程序使用了Servlet…...

微信小程序开发实战记录
近期公司需要开发一个小程序项目,时间非常紧急,在开发过程中遇到几个困扰的问题及解决方案,记录如下:小程序框架选择 基础框架:小程序原生框架 sassui: 采用 vant weapp图表:采用 ec-echarts …...

防破解暗桩思路:检查菜单是否被非法修改过源码
本篇文章属于《518抽奖软件开发日志》系列文章的一部分。 我在开发《518抽奖软件》(www.518cj.net)的时候,为了防止被破解,需用添加一些暗桩,在合适的时机检查软件是否被非法修改过,如果被非法修改就做出提…...

IDEA使用Docker插件
修改Docker配置 1.执行命令vim /usr/lib/systemd/system/docker.service,在ExecStart配置的后面追加 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:…...

[前端] vue使用Mousetrap.js实现快捷键
Mousetrap.js介绍 Mousetrap.js 是一个处理键盘快捷键的 JavaScript 库,它允许您定义复杂的键盘快捷键并在浏览器中使用。 官方地址 代码仓库 安装库 在命令行中运行以下命令安装 mousetrap 模块: npm install mousetrap再次运行命令行,安…...

如何查询Oracle的字符集
如何查询Oracle的字符集 很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确…...

C语言每日一练------------Day(7)
本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:两个数组的交集 双指针 💓博主csdn个人主页…...

Meta语言模型LLaMA解读:模型的下载部署与运行代码
文章目录 llama2体验地址模型下载下载步骤准备工作什么是Git LFS下载huggingface模型 模型运行代码 llama2 Meta最新语言模型LLaMA解读,LLaMA是Facebook AI Research团队于2023年发布的一种语言模型,这是一个基础语言模型的集合。 体验地址 体验地址 …...

人生中的孤独
孤独是一种深刻而痛苦的情感状态,在这个喧嚣而充满人群的世界中,许多人都曾经或正在经历孤独的阶段。 孤独并不仅仅是身边缺乏他人的陪伴,更是一种内心的空虚和失落。 孤独的人生可能来源于各种原因。 有些人可能因为缺乏亲密的人际关系&…...

掌握Spring框架核心组件:深入探讨IOC、AOP、MVC及注解方式面试指南【经验分享】
目录 引言 一、Spring IOC篇 1.什么是Spring 2.核心概念 3.核心架构 4.什么是控制反转(IOC) 5.依赖注入(DI) 二、Spring AOP篇 1.什么是AOP 2.Spring AOP代理机制 3.核心概念 4.通知分类 三、Spring MVC篇 1.什么…...

代码随想录算法训练营第37天 | ● 738.单调递增的数字 ● 968.监控二叉树 ● 总结
文章目录 前言一、738.单调递增的数字二、968.监控二叉树总结 前言 可以吗? 一、738.单调递增的数字 本题只要想清楚个例,例如98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum…...

SOPC之NIOS Ⅱ实现电机转速PID控制(调用中断函数)
通过FPGA开发板上的NIOS Ⅱ搭建电机控制的硬件平台,包括电机正反转、编码器的读取,再通过软件部分实现PID算法对电机速度进行控制,使其能够渐近设定的编码器目标值。 一、问题与改进 SOPC之NIOS Ⅱ实现电机转速PID控制_STATEABC的博客-CSDN…...

ElasticSearch安装为Win11服务
在windows的环境下操作是Elasticsearch,并且喜欢使用命令行 ,启动时通过cmd直接在elasticsearch的bin目录下执行elasticsearch ,这样直接启动的话集群名称会默elasticsearch,节点名称会随机生成。 停止就直接在cmd界面按CtrlC 其实我们也可以将elasticse…...

ransac拟合平面,代替open3d的segment_plane
0.open3d打包太大了,所以决定网上找找代码 使用open3d拟合平面并且求平面的法向量,open3d打包大概1个g的大小。 import open3d as o3dpcd o3d.geometry.PointCloud()pcd.points o3d.utility.Vector3dVector(points)## 使用RANSAC算法拟合平面plane_m…...

Docker技术--Docker镜像管理
1.Docker镜像特性 ①.镜像创建容器的特点 Docker在创建容器的时候需要指定镜像,每一个镜像都有唯一的标识:image_id,也可也使用镜像名称和版本号做唯一的标识,如果不指定版本号,那么默认使用的是最新的版本标签(laster)。 ②.镜像分层机制 Docker镜像是分层构建的,并通过…...

生态环境保护3D数字展厅提供了一个线上环保知识学习平台
在21世纪的今天,科技与环保的交汇点提供了无数令人兴奋的可能性。其中,生态环境保护3D数字展厅就是一个绝佳的例子。这个展厅以其独特的3D技术,为我们带来了一个全新的、互动的学习环境,让我们能够更直观地了解和理解我们的环境。…...

OPENCV实现计算描述子
1、计算描述子 kp,des = sift.computer(img,kp) 2、其作用是进行特征匹配 3、同时计算关键点和描述 3.1、kp,des = sift.detectAnd Computer(img,...)...